Detecting a location of motion using wireless signals and differences between topologies of wireless connectivity

ABSTRACT

In a general aspect, a method is presented for detecting a location of motion using wireless signals and differences between topologies of wireless connectivity. The method includes storing first motion-sensing statistics derived from first motion-sensing data associated with a first time frame. The first motion-sensing data is associated with a first motion-sensing topology of a wireless mesh network. The method also includes obtaining second motion-sensing statistics derived from second motion-sensing data associated with a second, subsequent time frame. The second motion-sensing data is associated with a second, distinct motion-sensing topology of the wireless mesh network. The first motion-sensing statistics are compared to the second motion-sensing statistics. The method additionally includes generating a probability vector based on the comparison. A location of the motion of the object during the second time frame is determined based on the probability vector.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application No.62/908,401 filed Sep. 30, 2019 and entitled “Detecting a Location ofMotion Using Wireless Signals and Topologies of Wireless Connectivity.”The priority application is hereby incorporated, in its entirety, byreference.

BACKGROUND

The following description relates to determining a location of motiondetected from wireless signals based on wireless link counting.

Motion detection systems have been used to detect movement, for example,of objects in a room or an outdoor area. In some example motiondetection systems, infrared or optical sensors are used to detectmovement of objects in the sensor's field of view. Motion detectionsystems have been used in security systems, automated control systemsand other types of systems.

DESCRIPTION OF DRAWINGS

FIG. 1 is a diagram showing an example wireless communication system.

FIGS. 2A and 2B are diagrams showing example wireless signalscommunicated between wireless communication devices in a motiondetection system.

FIG. 3 is a schematic diagram of an example wireless communicationnetwork that includes a plurality of wireless nodes.

FIG. 4 is a flowchart of an example process for determining a locationof motion detected by one or more wireless links in a wirelesscommunication network.

FIG. 5A is a flowchart of an example process in which a likelihoodcalculator generates a probability vector based on multiple wirelesslinks.

FIG. 5B is an example mathematical function for generating a probabilityvector using a likelihood calculator.

FIG. 6 is a schematic diagram of an example motion model using a trellisrepresentation for three wireless nodes.

FIG. 7 is a schematic diagram of an example flow of probabilities indetermining a location of motion detected by three wireless links in awireless communication network.

FIG. 8 is a schematic diagram of the example wireless communicationnetwork of FIG. 3, but in which the motion of an object excites fourwireless links.

FIG. 9 is a flowchart of an example process for determining a locationof motion based on a motion topology of a wireless communicationnetwork.

FIG. 10 is a flowchart of an example process for determining a locationof motion using a motion topology based on a variable timeframe.

FIG. 11 is an example formula, with an example graph, for determining aprobability of a wireless node being in a doubly-connected state in amotion topology.

FIGS. 12A & 12B are a schematic diagrams of an example wirelesscommunication network having different network topologies in,respectively, a subsequent time frame and a prior time frame.

FIG. 13 is flowchart of an example process for determining a location ofmotion based on a prior topology of a wireless communication network.

FIG. 14 is a schematic diagram is present of an example wirelesscommunication network having a wireless communication channel withdirect and indirect propagation pathways.

FIG. 15 is a flowchart of an example process for determining a locationof motion based on a matrix decomposition of motion indicator values.

FIG. 16 is a schematic diagram is presented of an example wirelesscommunication network in which leaf nodes are communicatively coupled towireless nodes.

FIG. 17 is a flowchart of an example process for determining a locationof motion based on identifying a wireless node near the motion and thenidentifying a leaf node communicatively coupled to the wireless node.

FIG. 18 presents an example formula for determining a location of motionusing a sub-mesh likelihood function.

DETAILED DESCRIPTION

In some aspects of what is described here, the location of motion in aspace (e.g., the particular room in a house where a person is moving, aparticular floor or quadrant of a building where a person is moving,etc.) may be detected using information from multiple wirelesscommunication devices communicating with each other wirelessly.

For instance, wireless signals received at each of the wirelesscommunication devices in a wireless communication network may beanalyzed to determine channel information for the differentcommunication links in the network (between respective pairs of wirelesscommunication devices in the network). The channel information may berepresentative of a physical medium that applies a transfer function towireless signals that traverse the space. In some instances, the channelinformation includes channel response information. Channel responseinformation may refer to known channel properties of a communicationlink, and may describe how a wireless signal propagates from atransmitter to a receiver, representing the combined effect of, forexample, scattering, fading, and power decay within the space betweenthe transmitter and receiver. In some instances, the channel informationincludes beamforming state information. Beamforming (or spatialfiltering) may refer to a signal processing technique used in multiantenna (multiple-input/multiple-output (MIMO)) radio systems fordirectional signal transmission or reception. Beamforming can beachieved by combining elements in an antenna array in such a way thatsignals at particular angles experience constructive interference whileothers experience destructive interference. Beamforming can be used atboth the transmitting and receiving ends in order to achieve spatialselectivity. In some cases (e.g., the IEEE 802.11ac standard), abeamforming steering matrix is used by a transmitter. The beamformingsteering matrix may include a mathematical description of how theantenna array should use each of its individual antenna elements toselect a spatial path for transmission. While certain aspects aredescribed herein with respect to channel response information,beamforming state information or beamformer steering matrix state mayalso be used in the aspects described as well.

The channel information for each of the communication links may beanalyzed (e.g., by a hub device or other device in the network, or aremote device communicably coupled to the network) to detect whethermotion has occurred in the space, to determine a relative location ofthe detected motion, or both. In some aspects, the channel informationfor each of the communication links may be analyzed to detect whether anobject is present or absent, e.g., when no motion is detected in thespace.

In some implementations, the wireless communication network may includea wireless mesh network. A wireless mesh network may refer to adecentralized wireless network whose nodes (e.g. wireless communicationdevices) communicate directly in a point-to-point manner without using acentral access point, base station or network controller. Wireless meshnetworks may include mesh clients, mesh routers, or mesh gateways. Insome instances, a wireless mesh network is based on the IEEE 802.11sstandard. In some instances, a wireless mesh network is based on WI-FIad hoc or another standardized technology. Examples ofcommercially-available wireless mesh networks include WI-FI systems soldby GOGGLE. EERO, and others.

In some example wireless communication networks, each node is connectedto one or more other nodes through one or more bi-directional links.Each node can analyze the wireless signals that it receives to identifythe perturbation or disturbance on each of the links. The disturbance oneach link can be represented as a motion indicator value, for example,as a scalar quantity that can be normalized. The link disturbance valuesfrom the nodes in the wireless communication network can be used todetermine the probability of motion at the locations associated with therespective node. For example, the probability of motion at each node canbe used to tell which node has the highest probability of having motionin its vicinity, and that node can be identified as the node aroundwhich the motion occurred. In order to do this, the analysis can be casein a Bayesian estimation framework, for the recursive computation ofprobabilities. The probabilistic framework offers a number of technicaladvantages, for example, providing recursive estimation and henceeventual convergence to a correct result, simplistic logic with noconditions for each special situation, performance that is more accurateand robust (e.g., to artifacts) and others.

In addition, physical insights regarding the motion detection system caninform the Bayesian estimation framework that is used to detect thelocation of motion. For example, the relative magnitude of excitation ona link (between a transmitter node and receiver node) is likely to begreater when the motion that creates the excitation is nearer thereceiver node. Accordingly, as an initial probability estimate for wheremotion occurred, the highest probabilities can be assigned to thereceiver nodes on wireless links associated with the highest motionindicator values. This initial probability estimate can be combined witha conditional probability distribution (e.g., based on prior motiondata) to produce a recursively refined probability estimate according toa Bayesian framework. As another example, in certain contexts thelikelihood of motion transitioning between distinct locations can behigher or lower, relative to the likelihood of motion remaining in asingle location. Accordingly, location transition probabilities can beincorporated into the Bayesian framework. For example, a transitionprobability matrix can be combined with the initial probability estimateand the conditional probability distribution to produce the recursivelyrefined probability estimate according to the Bayesian framework.

FIG. 1 is a diagram showing an example wireless communication system100. The example wireless communication system 100 includes threewireless communication devices—a first wireless communication device102A, a second wireless communication device 102B, and a third wirelesscommunication device 102C. The example wireless communication system 100may include additional wireless communication devices 102 and/or othercomponents (e.g., one or more network servers, network routers, networkswitches, cables, or other communication links, etc.).

The example wireless communication devices 102A, 102B, 102C can operatein a wireless network, for example, according to a wireless networkstandard or another type of wireless communication protocol. Forexample, the wireless network may be configured to operate as a WirelessLocal Area Network (WLAN), a Personal Area Network (PAN), a metropolitanarea network (MAN), or another type of wireless network. Examples ofWLANs include networks configured to operate according to one or more ofthe 802.11 family of standards developed by IEEE (e.g., WI-FI networks),and others. Examples of PANs include networks that operate according toshort-range communication standards (e.g., BLUETOOTH®, Near FieldCommunication (NFC), ZIGBEE), millimeter wave communications, andothers.

In some implementations, the wireless communication devices 102A, 102B,102C may be configured to communicate in a cellular network, forexample, according to a cellular network standard. Examples of cellularnetworks include networks configured according to 2G standards such asGlobal System for Mobile (GSM) and Enhanced Data rates for GSM Evolution(EDGE) or EGPRS; 3G standards such as Code Division Multiple Access(CDMA), Wideband Code Division Multiple Access (WCDMA), Universal MobileTelecommunications System (UMTS), and Time Division Synchronous CodeDivision Multiple Access (TD-SCDMA); 4G standards such as Long-TermEvolution (LTE) and LTE-Advanced (LTE-A); 5G standards, and others. Inthe example shown in FIG. 1, the wireless communication devices 102A,102B, 102C can be, or may include, standard wireless network components.For example, the wireless communication devices 102A, 102B, 102C may becommercially-available WI-FI devices.

In some cases, the wireless communication devices 102A, 102B, 102C maybe WI-FI access points or another type of wireless access point (WAP).The wireless communication devices 102A, 102B, 102C may be configured toperform one or more operations as described herein that are embedded asinstructions (e.g., software or firmware) on the wireless communicationdevices. In some cases, one or more of the wireless communicationdevices 102A, 102B, 102C may be nodes of a wireless mesh network, suchas, for example, a commercially-available mesh network system (e.g.,GOOGLE WI-FI, EERO WI-FI systems, etc.). In some cases, another type ofstandard or conventional WI-FI transceiver device may be used. Thewireless communication devices 102A, 102B, 102C may be implementedwithout WI-FI components; for example, other types of wireless protocolsfor wireless communication, either standard or non-standard, may be usedfor motion detection.

In the example shown in FIG. 1, the wireless communication devices,e.g., 102A, 102B, transmit wireless signals over a communication channel(e.g., according to a wireless network standard, a motion detectionprotocol, a presence detection protocol, or other standard ornon-standard protocol). For example, the wireless communication devicesmay generate motion probe signals for transmission to probe a space todetect motion or presence of an object. In some implementations, themotion probe signals may include standard signaling or communicationframes that include standard pilot signals used in channel sounding(e.g., channel sounding for beamforming according to the IEEE802.11ac-2013 standard). In some cases, the motion probe signals includereference signals known to all devices in the network. In someinstances, one or more of the wireless communication devices may processmotion detection signals, which are signals received based on motionprobe signals transmitted through the space. For example, the motiondetection signals may be analyzed to detect motion of an object in aspace, lack of motion in the space, or the presence or absence of anobject in the space when lack of motion is detected, based on changes(or lack thereof) detected in the communication channel.

The wireless communication devices transmitting motion probe signals,e.g. 102A, 102B, may be referred to as source devices. In some cases,wireless communication devices 102A, 102B may broadcast the wirelessmotion probe signals (e.g., described above). In other cases, thewireless communication devices 102A, 102B may send wireless signalsaddressed to another wireless communication device 102C and otherdevices (e.g., a user equipment, a client device, a server, etc.). Thewireless communication device 102C as well as the other devices (notshown) may receive the wireless signals transmitted by the wirelesscommunication devices 102A, 102B. In some cases, the wireless signalstransmitted by the wireless communication devices 102A, 102B arerepeated periodically, for example, according to a wirelesscommunication standard or otherwise.

In some examples, the wireless communication device 102C, which may bereferred to as a sensor device, processes the wireless signals receivedfrom the wireless communication devices 102A, 102B to detect motion, orlack of motion, of an object in a space accessed by the wirelesssignals. In some examples, another device or computing system processesthe wireless signals received by the wireless communication device 102Cfrom the wireless communication devices 102A, 102B to detect motion, orlack of motion, of an object in a space accessed by the wirelesssignals. In some cases, the wireless communication device 102C (oranother system or device) processes the wireless signals to detect thepresence or absence of an object in a space when lack of motion isdetected. In some instances, the wireless communication device 102C (oranother system or device) may perform one or more operations asdescribed in relation to FIG. 6 or in the example method describedmethod to FIG. 8, or another type of process for detecting motion,detecting lack of motion, or detecting the presence or absence of anobject when lack of motion is detected. In other examples, the wirelesscommunication system 100 may be modified, for instance, such that thewireless communication device 102C can transmit wireless signals, e.g.as a source device, and the wireless communication devices 102A, 102Bmay process the wireless signals, e.g. as sensor devices, from thewireless communication device 102C, to detect motion, lack of motion, orpresence when no motion is detected. That is, each of the wirelesscommunication devices 102A, 102B, 102C, may be configured, in somecases, as a source device, a sensor device, or both.

The wireless signals used for motion and/or presence detection caninclude, for example, a beacon signal (e.g., BLUETOOTH® Beacons, WI-FIBeacons, other wireless beacon signals), pilot signals (e.g., pilotsignals used for channel sounding, such as in beamforming applications,according to the IEEE 802.11ac-2013 standard), or another standardsignal generated for other purposes according to a wireless networkstandard, or non-standard signals (e.g., random signals, referencesignals, etc.) generated for motion and/or presence detection or otherpurposes. In some cases, the wireless signals for motion and/or presencedetection are known to all devices in the network.

In some examples, the wireless signals may propagate through an object(e.g., a wall) before or after interacting with a moving object, whichmay allow the moving object's movement to be detected without an opticalline-of-sight between the moving object and the transmission orreceiving hardware. In some cases, the wireless signals, when receivedby a wireless communication device, e.g. 102C, may indicate lack ofmotion in a space, for example, that an object is not moving, or nolonger moving, in the space. In some cases, the wireless signals, whenreceived by a wireless communication device, e.g. 102C, may indicate thepresence of an object in the space when lack of motion is detected.Conversely, the wireless signals may indicate the absence of an objectin the space when lack of motion is detected. For example, based on thereceived wireless signals, the third wireless communication device 102Cmay generate motion data, presence data, or both. In some instances, thethird wireless communication device 102C may communicate the motiondetection and/or presence data, to another device or system, such as asecurity system, that may include a control center for monitoringmovement within a space, such as a room, building, outdoor area, etc.

In some implementations, the wireless communication devices 102A, 102Bmay be configured to transmit motion probe signals (e.g., as describedabove) on a wireless communication channel separate from wirelessnetwork traffic signals (e.g., a frequency channel or coded channel).For example, the modulation applied to the payload of a motion probesignal and the type of data or data structure in the payload may beknown by the third wireless communication device 102C, which may reducethe amount of processing that the third wireless communication device102C performs for motion and presence detection. The header may includeadditional information such as, for example, an indication of whethermotion or lack of motion was detected by another device in thecommunication system 100, whether a presence of an object was detectedby another device in the communication system 100, an indication of themodulation type, an identification of the device transmitting thesignal, and so forth.

In the example shown in FIG. 1, the wireless communication system 100 isillustrated as a wireless mesh network, with wireless communicationlinks between each of the respective wireless communication devices 102.In the example shown, the wireless communication links between the thirdwireless communication device 102C and the first wireless communicationdevice 102A can be used to probe a first motion detection zone 110A, thewireless communication links between the third wireless communicationdevice 102C and the second wireless communication device 102B can beused to probe a second motion detection zone 110B, and the wirelesscommunication links between the first wireless communication device 102Aand the second wireless communication device 102B can be used to probe athird motion detection zone 110C. In some instances, each wirelesscommunication device 102 may be configured to detect motion, lack ofmotion, and/or the presence or absence of an object when no motion isdetected, in each of the motion detection zones 110 accessed by thatdevice by processing received signals that are based on wireless signalstransmitted by the wireless communication devices 102 through the motiondetection zones 110. For example, when a person 106 moves in the firstmotion detection zone 110A and the third motion detection zone 110C, thewireless communication devices 102 may detect the motion based onsignals they receive that are based on wireless signals transmittedthrough the respective motion detection zones 110. For instance, thefirst wireless communication device 102A can detect motion of the personin both the first and third motion detection zones 110A, 110C, thesecond wireless communication device 102B can detect motion of theperson 106 in the third motion detection zone 110C, and the thirdwireless communication device 102C can detect motion of the person 106in the first motion detection zone 110A. In some cases, lack of motionby the person 106 and, in other cases, the presence of the person 106when the person 106 is not detected to be moving, may be detected ineach of the motion detection zones 110A, 110B, 110C.

In some instances, the motion detection zones 110 can include, forexample, air, solid materials, liquids, or another medium through whichwireless electromagnetic signals may propagate. In the example shown inFIG. 1, the first motion detection zone 110A provides a wirelesscommunication channel between the first wireless communication device102A and the third wireless communication device 102C, the second motiondetection zone 110B provides a wireless communication channel betweenthe second wireless communication device 102B and the third wirelesscommunication device 102C, and the third motion detection zone 110Cprovides a wireless communication channel between the first wirelesscommunication device 102A and the second wireless communication device102B. In some aspects of operation, wireless signals transmitted on awireless communication channel (separate from or shared with thewireless communication channel for network traffic) are used to detectmovement or lack of movement of an object in a space, and may be used todetect the presence (or absence) of an object in the space when there isa lack of movement detected. The objects can be any type of static ormoveable object, and can be living or inanimate. For example, the objectcan be a human (e.g., the person 106 shown in FIG. 1), an animal, aninorganic object, or another device, apparatus, or assembly, an objectthat defines all or part of the boundary of a space (e.g., a wall, door,window, etc.), or another type of object. In some implementations,motion information from the wireless communication devices may triggerfurther analysis to determine the presence or absence of an object whenmotion of the object is not detected.

In some implementations, the wireless communication system 100 may be,or may include, a motion detection system. The motion detection systemmay include one or more of the wireless communication devices 102A,102B, 102C and possibly other components. One or more wirelesscommunication devices 102A, 102B, 102C in the motion detection systemmay be configured for motion detection, presence detection, or both. Themotion detection system may include a database that stores signals. Oneof the wireless communication devices 102A, 102B, 102C of the motiondetection system may operate as a central hub or server for processingreceived signals and other information to detect motion and/or presence.The storage of data—e.g., in the database, and/or the determination ofmotion, lack of motion (e.g., a steady state), or presence detection—maybe performed by a wireless communication device 102, or in some cases,may be performed by another device in the wireless communication networkor in the cloud (e.g., by one or more remote devices).

FIGS. 2A and 2B are diagrams showing example wireless signalscommunicated between wireless communication devices 204A, 204B, 204C ina motion detection system. The wireless communication devices 204A,204B, 204C may be, for example, the wireless communication devices 102A,102B, 102C shown in FIG. 1, or may be other types of wirelesscommunication devices. Examples of wireless communication devicesinclude wireless mesh devices, stationary wireless client devices,mobile wireless client devices, and so forth.

In some cases, a combination of one or more of the wirelesscommunication devices 204A, 204B, 204C can form, or may be part of, adedicated motion detection system. For example, as part of the dedicatedmotion detection system, one or more of the wireless communicationdevices 204A, 204B, 204C may be configured for motion detection,presence detection, or both, in the motion detection system. In somecases, a combination of one or more of the wireless communicationdevices 204A, 204B, 204C may be, or may be part of, an ad hoc motiondetection system that also performs other types of functions.

The example wireless communication devices 204A, 204B, 204C may transmitand/or receive wireless signals through a space 200. The example space200 may be completely or partially enclosed or open at one or moreboundaries of the space 200. The space 200 may be or may include aninterior of a room, multiple rooms, a building, an indoor area, outdoorarea, or the like. A first wall 202A, a second wall 202B, and a thirdwall 202C at least partially enclose the space 200 in the example shown.

In the example shown in FIGS. 2A and 2B, the first wirelesscommunication device 204A is operable to transmit wireless motion probesignals repeatedly (e.g., periodically, intermittently, at scheduled,unscheduled or random intervals, etc.), e.g., as a source device. Thesecond and third wireless communication devices 204B, 204C are operableto receive signals based on the motion probe signals transmitted by thewireless communication device 204A, e.g., as a sensor device. The motionprobe signals may be formatted as described above. For example, in someimplementations, the motion probe signals include standard signaling orcommunication frames that include standard pilot signals used in channelsounding (e.g., channel sounding for beamforming according to the IEEE802.11ac-2013 standard). The wireless communication devices 204B, 204Ceach have an interface, modem, processor, or other component that isconfigured to process received motion detection signals to detect motionor lack of motion, of an object in the space 200. In some instances, thewireless communication devices 204B, 204C may each have an interface,modem, processor, or other component that is configured to detect thepresence or absence of an object in the space 200 when lack of motion isdetected, for example, whether the space is occupied or non-occupied.

As shown, an object is in a first position 214A at an initial time t=0in FIG. 2A, and the object has moved to a second position 214B atsubsequent time t=1 in FIG. 2B. In FIGS. 2A and 2B, the moving object inthe space 200 is represented as a human, but the moving object can beanother type of object. For example, the moving object can be an animal,an inorganic object (e.g., a system, device, apparatus, or assembly), anobject that defines all or part of the boundary of the space 200 (e.g.,a wall, door, window, etc.), or another type of object. For thisexample, the representation of the object's 214 movement is merelyindicative that the object's location changed within the space 200between time t=0 and time t=1.

As shown in FIGS. 2A and 2B, multiple example paths of the wirelesssignals transmitted from the first wireless communication device 204Aare illustrated by dashed lines. Along a first signal path 216, thewireless signal is transmitted from the first wireless communicationdevice 204A and reflected off the first wall 202A toward the secondwireless communication device 204B. Along a second signal path 218, thewireless signal is transmitted from the first wireless communicationdevice 204A and reflected off the second wall 202B and the first wall202A toward the third wireless communication device 204C. Along a thirdsignal path 220, the wireless signal is transmitted from the firstwireless communication device 204A and reflected off the second wall202B toward the third wireless communication device 204C. Along a fourthsignal path 222, the wireless signal is transmitted from the firstwireless communication device 204A and reflected off the third wall 202Ctoward the second wireless communication device 204B.

In FIG. 2A, along a fifth signal path 224A, the wireless signal istransmitted from the first wireless communication device 204A andreflected off the object at the first position 214A toward the thirdwireless communication device 204C. Between time t=0 in FIG. 2A and timet=1 in FIG. 2B, a surface of the object moves from the first position214A to a second position 214B in the space 200 (e.g., some distanceaway from the first position 214A). In FIG. 2B, along a sixth signalpath 224B, the wireless signal is transmitted from the first wirelesscommunication device 204A and reflected off the object at the secondposition 214B toward the third wireless communication device 204C. Thesixth signal path 224B depicted in FIG. 2B is longer than the fifthsignal path 224A depicted in FIG. 2A due to the movement of the objectfrom the first position 214A to the second position 214B. In someexamples, a signal path can be added, removed, or otherwise modified dueto movement of an object in a space.

The example wireless signals shown in FIGS. 2A and 2B may experienceattenuation, frequency shifts, phase shifts, or other effects throughtheir respective paths and may have portions that propagate in anotherdirection, for example, through the walls 202A, 202B, and 202C. In someexamples, the wireless signals are radio frequency (RF) signals. Thewireless signals may include other types of signals.

In the example shown in FIGS. 2A and 2B, the first wirelesscommunication device 204A may be configured as a source device and mayrepeatedly transmit a wireless signal. For example, FIG. 2A shows thewireless signal being transmitted from the first wireless communicationdevice 204A during a first time t=0. The transmitted signal may betransmitted continuously, periodically, at random or intermittent timesor the like, or a combination thereof. For example, the transmittedsignal may be transmitted one or more times between time t=0 and asubsequent time t=1 illustrated in FIG. 2B, or any other subsequenttime. The transmitted signal may have a number of frequency componentsin a frequency bandwidth. The transmitted signal may be transmitted fromthe first wireless communication device 204A in an omnidirectionalmanner, in a directional manner or otherwise. In the example shown, thewireless signals traverse multiple respective paths in the space 200,and the signal along each path may become attenuated due to path losses,scattering, reflection, or the like and may have a phase or frequencyoffset.

As shown in FIGS. 2A and 2B, the signals from various paths 216, 218,220, 222, 224A, and 224B combine at the third wireless communicationdevice 204C and the second wireless communication device 204B to formreceived signals. Because of the effects of the multiple paths in thespace 200 on the transmitted signal, the space 200 may be represented asa transfer function (e.g., a filter) in which the transmitted signal isinput and the received signal is output. When an object moves in thespace 200, the attenuation or phase offset affected upon a signal in asignal path can change, and hence, the transfer function of the space200 can change. Assuming the same wireless signal is transmitted fromthe first wireless communication device 204A, if the transfer functionof the space 200 changes, the output of that transfer function, e.g. thereceived signal, will also change. A change in the received signal canbe used to detect movement of an object. Conversely, in some cases, ifthe transfer function of the space does not change, the output of thetransfer function—the received signal—does not change. Lack of change inthe received signal (e.g., a steady state) may indicate lack of movementin the space 200.

Mathematically, a transmitted signal f(t) transmitted from the firstwireless communication device 204A may be described according toEquation (1):

$\begin{matrix}{{f(t)} = {\sum\limits_{n = {- \infty}}^{\infty}{c_{n}e^{j\omega_{n}t}}}} & (1)\end{matrix}$where ω_(n) represents the frequency of nth frequency component of thetransmitted signal, c_(n) represents the complex coefficient of the nthfrequency component, and t represents time. With the transmitted signalf(t) being transmitted from the first wireless communication device204A, an output signal r_(k)(t) from a path k may be described accordingto Equation (2):

$\begin{matrix}{{r_{k}(t)} = {\sum\limits_{n = {- \infty}}^{\infty}{\alpha_{n,k}c_{n}e^{j{({{\omega_{n}t} + \phi_{n,k}})}}}}} & (2)\end{matrix}$where α_(n,k) represents an attenuation factor (or channel response;e.g., due to scattering, reflection, and path losses) for the nthfrequency component along path k, and ϕ_(n,k) represents the phase ofthe signal for nth frequency component along path k. Then, the receivedsignal R at a wireless communication device can be described as thesummation of all output signals r_(k)(t) from all paths to the wirelesscommunication device, which is shown in Equation (3):

$\begin{matrix}{R = {\sum\limits_{k}{r_{k}(t)}}} & (3)\end{matrix}$Substituting Equation (2) into Equation (3) renders the followingEquation (4):

$\begin{matrix}{R = {\sum\limits_{k}{\sum\limits_{n = {- \infty}}^{\infty}{( {\alpha_{n,k}e^{{j\;\phi_{n,k}})}} )c_{n}e^{j\;\omega_{n}t}}}}} & (4)\end{matrix}$

The received signal R at a wireless communication device can then beanalyzed. The received signal R at a wireless communication device canbe transformed to the frequency domain, for example, using a FastFourier Transform (FFT) or another type of algorithm. The transformedsignal can represent the received signal R as a series of n complexvalues, one for each of the respective frequency components (at the nfrequencies ω_(n)). For a frequency component at frequency ω_(n), acomplex value Y_(n) may be represented as follows in Equation (5):

$\begin{matrix}{Y_{n} = {\sum\limits_{k}{c_{n}\alpha_{n,k}e^{j\;\phi_{n,k}}}}} & (5)\end{matrix}$

The complex value Y_(n) for a given frequency component ω_(n) indicatesa relative magnitude and phase offset of the received signal at thatfrequency component ω_(n). When an object moves in the space, thecomplex value Y_(n) changes due to the channel response α_(n,k) of thespace changing. Accordingly, a change detected in the channel response(and thus, the complex value Y_(n)) can be indicative of movement of anobject within the communication channel. Conversely, a stable channelresponse (or “steady state”), for example, when no change or only smallchanges are detected in the channel response (or the complex valueY_(n)), indicates lack of movement. Thus, in some implementations, thecomplex value Y_(n) for each of multiple devices in a wireless meshnetwork can be analyzed to detect whether motion has occurred, orwhether there is lack of motion, in a space traversed by the transmittedsignals f(t). In some cases, when lack of movement is detected, furtheranalysis may be performed on the channel response to determine if anobject is present in the space, but not moving.

In another aspect of FIGS. 2A and 2B, beamforming may be performedbetween devices based on some knowledge of the communication channel(e.g., through feedback properties generated by a receiver), which canbe used to generate one or more steering properties (e.g., a steeringmatrix) that are applied by a transmitter device to shape thetransmitted beam/signal in a particular direction or directions. Thus,changes to the steering or feedback properties used in the beamformingprocess indicate changes, which may be caused by moving objects, in thespace accessed by the wireless communication system. For example, motionmay be detected by substantial changes in the communication channel,e.g., as indicated by a channel response, or steering or feedbackproperties, or any combination thereof, over a period of time.

In some implementations, for example, a steering matrix may be generatedat a transmitter device (beamformer) based on a feedback matrix providedby a receiver device (beamformee) based on channel sounding. Because thesteering and feedback matrices are related to the propagationcharacteristics of a channel, these matrices change as objects movewithin the channel. Changes in the channel characteristics areaccordingly reflected in these matrices, and by analyzing the matrices,motion can be detected, and different characteristics of the detectedmotion can be determined. In some implementations, a spatial map may begenerated based on one or more beamforming matrices. The spatial map mayindicate a general direction of an object in a space relative to awireless communication device. In some cases, “modes” of a beamformingmatrix (e.g., a feedback matrix or steering matrix) can be used togenerate the spatial map. The spatial map may be used to detect thepresence of motion in the space or to detect a location of the detectedmotion.

In some instances, the channel information (e.g., channel responseinformation or beamforming state information, as described above)derived from wireless signals can be used to compute motion indicatorvalues. For example, a set of motion indicator values for a given timeframe may represent the levels of disturbance detected on the respectivewireless links that communicated the wireless signals during the timeframe. In some cases, the channel information can be filtered orotherwise modified, for instance, to reduce the effects of noise andinterference on the motion indicator values. In some contexts, a highermagnitude motion indicator value may represent a higher level ofdisturbance, while a lower magnitude motion indicator value mayrepresent a relatively lower level of disturbance. For instance, eachmotion indicator value can be an individual scalar quantity, and themotion indicator values can be normalized (e.g., to unity or otherwise).

In some cases, the motion indicator values associated with a time framecan be used collectively to make an overall determination, for example,whether motion occurred in the space during the time frame, where motionoccurred in the space during the time frame, etc. For instance, a motionconsensus value for a time frame may indicate the overall determinationof whether motion occurred in the space based on all (or a subset) ofmotion indicator values for the time frame. In some cases, a moreaccurate, reliable or robust determination can be made by analyzingmultiple motion indicator values for a time frame collectively. And insome cases, data sets can be updated recursively to further improve theaccuracy, for example, of location determinations. For instance, themotion indicator values for each sequential time frame can be used torecursively update data sets representing the conditional probability ofdetecting motion at distinct locations in the space, and the recursivelyupdated data sets can be used to make an overall determination of wheremotion occurred during a subsequent time frame.

FIG. 3 is a schematic diagram of an example wireless communicationnetwork 300 that includes a plurality of wireless nodes 302. Theplurality of wireless nodes 302 may be analogous to the wirelesscommunication devices 102, 204 of FIGS. 1 and 2A-2B, respectively. InFIG. 3, three wireless nodes 302 are depicted, labeled N₀, N₁, and N₂.However, other numbers of wireless nodes 302 are possible in thewireless communication network 300. Moreover, other types of nodes arepossible. For example, the wireless communication network 300 mayinclude one or more network servers, network routers, network switches,network repeaters, or other type of networking or computing equipment.

The wireless communication network 300 includes wireless communicationchannels 304 communicatively coupling respective pairs of wireless nodes302. Such communicative coupling may allow an exchange of wirelesssignals between wireless nodes 302 over a time frame. In particular, thewireless communication channels 304 allow bi-directional communicationbetween the respective pairs of wireless nodes 302. Such communicationmay occur along two directions simultaneously (e.g., full duplex) oralong only one direction at a time (e.g., half duplex). In someinstances, such as shown in FIG. 3, the wireless communication channels304 communicatively couple every pair of the plurality of wireless nodes302. In other instances, one or more pairs of wireless nodes 302 maylack a corresponding wireless communication channel 304.

Each wireless communication channel 304 includes two or more wirelesslinks, including at least one for each direction in the bi-directionalcommunication. In FIG. 3, an arrow represents each individual wirelesslink. The arrow is labeled L_(ij) where a first subscript, i, indicatesa transmitting wireless node and a second subscript, j, indicates areceiving wireless node. For example, wireless nodes N₀ and N₁ arecommunicatively coupled by two wireless links that are indicated in FIG.3 by two arrows, L₀₁ and L₁₀. Wireless link L₀₁ corresponds to wirelesscommunication along a first direction from N₀ to N₁ and wireless linkL₁₀ corresponds wireless communication along a second, opposingdirection from N₁ to N₀.

In some implementations, the wireless communication network 300 obtainsa set of motion indicator values associated with a time frame, which mayinclude the processes of motion detection described in relation to FIGS.2A-2B. The set of motion indicator values indicate motion detected fromwireless links in a wireless communication network. Each motionindicator value is associated with a respective wireless link. Themotion may be detected using one or more wireless links (e.g., one ormore wireless links L₀₁, L₁₀, L₀₂, L₂₀, L₁₂, and L₂₁ of FIG. 3) in thewireless communication network (e.g., the wireless communication network300). Each of the wireless links is defined between a respective pair ofwireless communication devices in the wireless communication network(e.g., pair combinations of wireless nodes N₀, N₁, and N₂).

In some variations, the wireless communication network 300 may include adata processing apparatus that executes program instructions (e.g., anetwork server, a wireless communication device, a network router,etc.). The program instructions may cause the data processing apparatusto assign a unique node identifier to each of the wireless nodes 302 inthe wireless communication network 300. The unique node identifier maybe mapped to a media access control (MAC) address value, whichcorresponds to a MAC address (or portion thereof) associated with awireless node. For example, the wireless nodes N₀, N₁, and N₂ of FIG. 3may be associated with a six-character portion of their respective MACaddresses, which is then mapped to a unique node identifier:{N ₀ ,N ₁ ,N ₂}→{7f4440,7f4c9e,7f630c}→{0,1,2}Here, the MAC address values of 7f4440, 7f4c9e, and 7f630c are mapped torespective unique node identifiers 0, 1, and 2. The program instructionsmay also cause the data processing apparatus to associate the wirelesslinks with their respective pairs of wireless nodes via correspondingpairs of MAC address values. The MAC address values may then be mappedto a unique link identifier to form a link table. For example, thewireless links L₀₁, L₁₀, L₀₂, L₂₀, L₁₂, and L₂₁ of FIG. 3 may be mappedto unique link identifiers according to:

$ \begin{Bmatrix}L_{01} \\L_{02} \\L_{10} \\L_{12} \\L_{20} \\L_{21}\end{Bmatrix}arrow\begin{Bmatrix} {7f4440}arrow{7f4c9e}  \\ {7f4440}arrow{7f630c}  \\ {7f4c9e}arrow{7f4440}  \\ {7f4c9e}arrow{7f630c}  \\ {7f630c}arrow{7f4440}  \\ {7f630c}arrow{7f4c9e} \end{Bmatrix}arrow\begin{Bmatrix}0 \\1 \\2 \\3 \\4 \\5\end{Bmatrix} $The MAC address values may be ordered, from left to right, to indicaterespective pairs of transmitting and receiving wireless nodes in awireless link. In particular, the left MAC address value may correspondto a transmitting wireless node and the right MAC address value maycorrespond to a receiving wireless node. Such mappings of unique nodeand link identifiers may aid the data processing apparatus in performingoperations, such as searching, sorting, and matrix manipulation, duringprocesses of motion detection.

The program instructions may additionally cause the data processingapparatus to poll the wireless links (or wireless nodes 302) to obtainmotion indicator values for each wireless link in the plurality ofwireless links. For example, the wireless links of the wirelesscommunication network 300 of FIG. 3 may report motion indicator valuesaccording to a data structure, such as shown below:

$\quad\begin{Bmatrix}0 & {{0.0}0} \\1 & {{0.0}0} \\2 & {{0.7}1} \\3 & {{1.0}7} \\4 & {{1.1}5} \\5 & {130}\end{Bmatrix}$In the data structure, the first column corresponds to the unique linkidentifiers of the wireless links and the second column of the datastructure corresponds to their respective motion indicator values. Thedata structure may be an array, as shown above, or some other type ofdata structure (e.g., a vector). Although data structure is presented ashaving three significant digits for each motion indicator value, othernumbers of significant digits are possible for the motion indicatorvalues (e.g., 2, 5, 9, etc.).

Now referring to FIG. 4, a flowchart 400 is presented of an exampleprocess for determining a location of motion detected by one or morewireless links in a wireless communication network. The one or morewireless links may be part of a plurality of wireless links defined byrespective pairs of wireless nodes, such as the wireless nodes 302 ofFIG. 3. The wireless communication network may include a data processingapparatus (e.g., one or more of the wireless nodes may serve as the dataprocessing apparatus). Alternatively, the data processing apparatus maybe communicatively-coupled to the wireless communication network througha data connection (e.g., a wireless connection, a copper-wiredconnection, a fiber optic connection, etc.). The data processingapparatus may receive a data structure associated with a time frame, asshown by line 402. The data structure 402 may map the plurality ofwireless links with their respective motion indicator values for thetime frame. The plurality of wireless links may be represented by uniquelink identifiers in the data structure 402. However, otherrepresentations are possible. For example, the plurality of wirelesslinks may be represented by respective pairs of unique node identifiers.In some instances, the data structure 402 may associate each of theunique link identifiers with a corresponding pair of unique nodeidentifiers.

The data processing apparatus executes program instructions to generate,from the data structure 402, wireless links that are present in thewireless communication network during the time frame. The generatedwireless links and their respective motion indicator values may bestored in a first memory of the data processing apparatus (or motiondetection system) that serves as a link dictionary. The link dictionaryis shown by block 404 of FIG. 4. The link dictionary 404 is operable totrack wireless links present in the wireless communication network oversuccessive time frames. For example, when a new wireless link isobserved in the wireless communication network, the data processingapparatus updates the link dictionary 404 to include the new wirelesslink. In another example, when an existing wireless link is no longerobserved in the wireless communication network, the data processingapparatus updates the link dictionary 404 to remove the (prior) existingwireless link. Wireless links may be represented in the link dictionary404 by unique link identifiers, respective pairs of unique nodeidentifiers, or both. However, other representations are possible.

The data processing apparatus also executes program instructions togenerate, from the data structure 402, wireless nodes present in thewireless communication network during the time frame. In particular, theprogram instructions direct the data processing apparatus to “split”each generated wireless link into individual wireless nodes of itsrespective pair of wireless nodes, as shown in block 406. The programinstructions also direct the data processing apparatus to sort or filterthrough the individual wireless nodes to identify unique wireless nodesin the wireless communication network during the time frame. Given thata single wireless node may be shared in common between two or morewireless links, the link dictionary 404 alone may not be sufficient inestablishing unique wireless nodes of the wireless communicationnetwork. The unique wireless nodes may then be stored in a second memoryof the data processing apparatus (or motion detection system) thatserves as a node dictionary. The node dictionary is shown by block 408of FIG. 4. The node dictionary 408 is operable to maintain a list ofunique wireless nodes present in the wireless communication network oversuccessive time frames. The unique wireless nodes may be represented inthe node dictionary 408 by respective unique node identifiers. However,other representations are possible.

A node counter and persistence calculator may be communicatively-coupledto the node dictionary 408, as shown by block 410. In many instances,the node counter and persistence calculator 410 is part of the dataprocessing apparatus. The node counter and persistence calculator 410 isoperable to track wireless nodes present in the wireless communicationnetwork over successive time frames and update the node dictionary 408accordingly. Such tracking may include timing an appearance (ordisappearance) of one or more wireless nodes. For example, when a newwireless node connects to the wireless communication network, the nodecounter and persistence calculator 410 updates the node dictionary 408to include the new wireless node. In another example, when a wirelessnode disconnects from the wireless communication network, the nodecounter and persistence calculator 410 updates the node dictionary 408to remove the disconnected wireless node. Such updating may occur aftera predetermined number of time frames have elapsed where the wirelessnode is not connected to the wireless communication network.

The data processing apparatus additionally executes program instructionsto alter one or more magnitudes of the set of motion indicator values toreference each motion indicator value to a common scale of wireless linksensitivity. More specifically, the data processing apparatus mayfunction, in part, as a link strength estimator, such as shown by block412, and a link equalizer, such as shown by block 414. The link strengthestimator 412 and the link equalizer 414 receive, from the linkdictionary 404, an identity of wireless links that are present in thewireless communication network during the time frame as well as theirrespective motion indicator values. The link equalizer 414 alsoreceives, from the link strength estimator 412, an equalization valuefor each of the identified wireless links. The link strength estimator412 and the link equalizer 414 operate cooperatively to reference themotion indicator values of each identified wireless links to a commonscale of wireless link sensitivity.

In operation, the link strength estimator 412 estimates a link strengthof the identified wireless links by determining a statistical propertyof their respective motion indicator values. The statistical propertymay be a maximum motion indicator value, a deviation of a motionindicator value from a mean value, or a standard deviation. Otherstatistical properties are possible. In some instances, the linkstrength estimator 412 tracks the statistical properties of one or morerespective motion indicator values over successive time frames. Thestatistical property may allow the link strength estimator 412 to gaugean excitation strength and corresponding dynamic range of a wirelesslink. Such gauging may account for a unique sensitivity of eachidentified wireless link. The link strength estimator 412 passes thedetermined statistical values to the link equalizer 414, which in turn,utilizes them as equalization values for respective motion indicatorvalues. In particular, the link equalizer 414 divides the motionindicator value of each identified wireless link with its respectiveequalization value (or statistical property) to generate a normalizedmotion indicator value. In this manner, the link equalizer 414“equalizes” the identified wireless links so that their respectiveresponses to motion or other events may be compared independent ofsensitivity.

For example, due to motion or another event, a first subset of wirelesslinks may become strongly excited and exhibit correspondingly highdynamic ranges (or sensitivities). A second subset of wireless links maybecome weakly excited and exhibit correspondingly low dynamic ranges (orsensitivities) due to the same motion or event. Such excitations andcorresponding dynamic ranges are reflected in the motion indicatorvalues received by the link strength estimator 412 and the linkequalizer 414 from the link dictionary 404. However, the link strengthestimator 412 and link equalizer 414 operate cooperative to normalizethe received motion indicator values to a common scale of wireless linksensitivity. Such normalization ensures that comparisons of the firstand second subsets of wireless links within the plurality of wirelesslinks do not overweight the first subset of wireless links relative tothe second subset. Other benefits are normalization are possible.

The program instructions may further cause the data processing apparatusto identify a subset of wireless links based on a magnitude of theirassociated motion indicator values relative to the other motionindicator values in the set of motion indicator values. In particular,the data processing apparatus may receive the identified wireless linksand their respective normalized motion indicator values from the linkequalizer 414 and store this data in a memory associated with alikelihood calculator, such as shown by block 416. As part of thisoperation, the data processing apparatus may also receive the list ofunique wireless nodes from the node dictionary 408 and store the list inthe memory associated with the likelihood calculator 416. The dataprocessing apparatus may function, in part, as the likelihood calculator416.

The likelihood calculator 416 identifies a subset of wireless linksbased on a magnitude of their respective, normalized motion indicatorvalues relative to other normalized motion indicator values. To do so,the likelihood calculator 416 may sort or filter through the normalizedmotion indicator values received from the link equalizer 414 to identifythe subset of wireless links. For example, the likelihood calculator 416may sort the data stored in the memory according to magnitude todetermine a highest normalized motion indicator value, therebygenerating a subset of wireless links with a single wireless link. Inanother example, the likelihood calculator 416 may sort the data in thememory according to magnitude to determine the three highest normalizedmotion indicator values, thereby generating a subset of wireless withthree wireless links. Other numbers of wireless links are possible forthe subset of wireless links.

The likelihood calculator 416 also generates count values for thewireless nodes connected to the wireless communication network duringthe time frame. The count value for each wireless node indicates howmany wireless links in the subset of wireless links are defined by thewireless node. For example, and with reference to FIG. 3, the likelihoodcalculator 416 may identify a subset of wireless links based on thethree highest normalized motion indicator values:

$ \begin{Bmatrix}0 & {{0.0}0} \\1 & {{0.0}0} \\2 & {{0.2}4} \\3 & {{0.3}6} \\4 & {{0.4}0} \\5 & 0.65\end{Bmatrix}arrow\begin{Bmatrix}3 & {{0.3}6} \\4 & {{0.4}0} \\5 & {{0.6}5}\end{Bmatrix} $The unique link identifiers of 3, 4, and 5 correspond to wireless nodesN₀, N₁, and N₂ as shown below:

$ \begin{Bmatrix}3 & {{0.3}6} \\4 & {{0.4}0} \\5 & {{0.6}5}\end{Bmatrix}arrow\begin{Bmatrix} {7f4c9e}arrow  & {7f630c} & {{0.3}6} \\ {7f630c}arrow  & {7f4440} & {{0.4}0} \\ {7f630c}arrow  & {7f4c9e} & {{0.6}5}\end{Bmatrix}arrow\begin{Bmatrix} N_{1}arrow N_{2}  & {{0.3}6} \\ N_{2}arrow N_{0}  & {{0.4}0} \\ N_{2}arrow N_{1}  & {{0.6}5}\end{Bmatrix} $Here, wireless node N₀ assists in defining one wireless link in thesubset of wireless links, i.e., N₂→N₀. Similarly, wireless node N₁assists in defining two wireless links in the subset of wireless links,i.e., N₁→N₂ and N₂→N₁, and wireless node N₂ assists in defining threewireless links in the subset of wireless links, i.e., N₁→N₂, N₂→N₀, andN₂→N₁. Accordingly, the likelihood calculator 416 generates count valuesof 1, 2, and 3 for respective wireless nodes N₀, N₁, and N₂. In thepresent example, all wireless nodes of the wireless communicationnetwork assist in defining a wireless link of the subset of wirelesslinks. However, for wireless nodes that do not assist in defining awireless link of the subset of wireless links, the likelihood calculator416 may generate a count value of zero. In some instances, thelikelihood calculator 416 generates a count-value data structureassociating each wireless node connected to the wireless communicationnetwork during the time frame with its respective count value. For thepresent example, the likelihood calculator 416 may generate thefollowing the count-value data structure:

$\quad\begin{Bmatrix}N_{0} & 1 \\N_{1} & 2 \\N_{2} & 3\end{Bmatrix}$Although wireless nodes in the count-value data structure arerepresented by the label, N_(i), where i represents a number of awireless node, other representations are possible (e.g., partial MACaddresses).

The likelihood calculator 416 further generates a probability vectorbased on the count values that includes values for each wireless nodeconnected to the wireless communication network during the time frame.The values for each connected wireless node represent a probability ofmotion at the connected wireless node during the time frame. Inparticular, the values may represent a probability that motion at (orproximate to) a respective wireless node induces link activity along aparticular wireless link. In some instances, the values sum to unity. Inthese instances, the values may be probability values. The likelihoodcalculator 416 passes the generated probability vector to a Bayesianupdate engine, as shown in FIG. 4.

In some instances, the values for each connected wireless node arelikelihood values assigned from a link likelihood map. The likelihoodvalues may not necessary sum to unity. The link likelihood mapassociates likelihood values with respective magnitudes of count values.The likelihood values and their associations may be predetermined andmay further be stored in a memory of the likelihood calculator 416 (ordata processing apparatus). For example, if a wireless node is stronglyrepresented in a subset of wireless links, motion detected by thewireless communication network will have a relatively high probabilityof being located at or near the wireless node. As such, the linklikelihood map may associate high likelihood values with proportionatelyhigh count values. However, other associations of likelihood values andcount values are possible.

In some variations, the probability vector is represented by aprobability vector, P(L_(j)|N_(i)), that includes probability valuesbased on the link likelihood map. The probability values correspond toprobabilities that a wireless link, L_(j), exhibits link activity givenmotion at a wireless node, N_(i). For example, and with reference toFIG. 3, the likelihood calculator 416 may generate a subset of wirelesslinks that includes only wireless link L₀₂, which has a unique linkidentifier of “1”. As such, P(L_(j)|N_(i))=P(1|N_(i))={P(1|0), P(1|1),P(1|2)}. Here, P(1|0) corresponds to the probability that motion atwireless node 0 induces link activity along wireless link 1, P(1|1)corresponds to the probability that motion at wireless node 1 induceslink activity along wireless link 1, and P(112) corresponds to theprobability that motion at wireless node 2 induces link activity alongwireless link 1. These probability values can be generated fromlikelihood values of the link likelihood map. For example, thelikelihood calculator 416 may assign wireless nodes 0, 1, and 2 each alikelihood value based on a respective count value. The likelihoodcalculator 416 may then normalize the assigned likelihood values tounity, thereby generating corresponding probability values for eachwireless node.

FIG. 5A presents a flowchart of an example process in which a likelihoodcalculator generates a probability vector based on multiple wirelesslinks. FIG. 5A depicts the likelihood calculator taking three wirelesslinks into account. However, other numbers of wireless links arepossible. To take multiple wireless links into account, the likelihoodcalculator relies on motion indicator values in addition to the highestmotion indicator value. This process makes intuitive sense. If adisturbance happens near a wireless node, the disturbance is likely toaffect all wireless links associated with that wireless node. Thelikelihood calculator may take up all the excited wireless links andexamine a frequency of occurrence of a particular wireless node amongstthe excited wireless links. In this instance, motion is most likely tobe happening at the most common wireless node. The likelihood calculatortakes the M top excited wireless links (e.g., M=3), and passes themthrough a mathematical function. The mathematical function splits eachwireless link to create a set of tuples, then determines the frequencyof each wireless node in the given set of tuples. The mathematicalfunction also maps the resulting frequency of each wireless node tolikelihood through a link likelihood map. The probability vector is thenoutput for Bayesian update engine.

FIG. 5B presents an example mathematical function for generating aprobability vector using a likelihood calculator. FIG. 5B shows themulti-link likelihood process utilized by the likelihood calculator inFIG. 5A, and splits and explains the example mathematical function ingreater detail. A wireless link from a certain time instant is referredto as L_(t), and the wireless link number in terms of excitation rank isgiven by m. The likelihood calculator takes up M excited wireless linksfrom a wireless link vector and uses one wireless link, denoted as(a→b), to create a set of nodes {a} and {b} and perform a union of thisset over all the M excited wireless links. Variable j then sweeps overthis union by taking in each element and comparing it with a givenelement denoted by i, where i is being swept across the node dictionary.This comparison yields a one or a zero, which are summed together forall values of j in the dictionary. The summation yields a count for eachwireless node present in the wireless communication network. An LLmapfunction receives a certain node and its respective count, and inresponse, outputs a likelihood value for every count. The higher thecount, the higher is the likelihood for motion at a wireless node.

Now referring back to FIG. 4, the data processing apparatus alsoexecutes program instructions to pass, from the node dictionary 408 to aprobability mapper/redistributor, the list of unique wireless nodespresent in the wireless communication network during the time frame. Thedata processing apparatus may function, in part, as a probabilitymapper/redistributor, such as shown by block 418. As part of thisoperation, the data processing apparatus may receive a probabilityvector generated prior to the time frame, e.g., a prior probabilityvector. The probability mapper/redistributor 418 is operable todetermine a change in wireless connectivity between time frames, such asbetween a prior time frame and a subsequent time frame. The change inwireless connectivity may include one or both of: [1] wireless nodesthat have connected to the wireless communication network between theprior and subsequent time frames, or [2] wireless nodes that havedisconnected from the wireless communication network between the priorand subsequent time frames. To determine the change in wirelessconnectivity, the probability mapper/redistributor 418 may compare thelist of unique wireless nodes in the time frame to wireless nodesrepresented in the probability vector generated prior to the time frame.

The probability mapper/redistributor 418 is also operable to generate aninitialization probability vector of a plurality of initializationprobability vectors 420 by altering values of the prior probabilityvector based on the change in wireless connectivity. For example, thechange in wireless connectivity may include a wireless node that hasdisconnected from the wireless communication network between the priorand subsequent time frames. In this case, the probabilitymapper/redistributor 418 may generate the initialization probabilityvector by apportioning values of the prior probability vector associatedwith the disconnected wireless node to values of wireless nodes thathave remained connected to the wireless communication network. Suchapportioning may occur in ratios defined by the values of the remainingwireless nodes. However, other apportioning schedules are possible. Inanother example, the change in wireless connectivity may include awireless node that has connected from the wireless communication networkbetween the prior and subsequent time frames. In this case, theprobability mapper/redistributor 418 generate the initializationprobability vector by adding a value to the prior probability vector forthe newly-connected wireless node.

The probability mapper/redistributor 418 may be operable to generateother types of initialization probability vectors that correspond toreset states. For example, if the wireless communication network (ormotion detection system) is cold-started, the probabilitymapper/redistributor 418 may generate an initialization probabilityvector by assigning equal probability values to all unique wirelessnodes listed in the node dictionary 408. In another example, if thewireless communication network (or motion detection system) iswarm-started, the probability mapper/redistributor 418 may generate aninitialization probability vector based on probability values thatcorrespond to a time frame when motion was last detected. In yet anotherexample, if the wireless communication network (or motion detectionsystem) is operational but later reset, the probabilitymapper/redistributor 418 may utilize the prior probability vector as theinitialization probability vector. In yet another example, if a usernotifies the wireless communication network (or motion detection system)that he/she is leaving a monitored residence (e.g., through a mobilesoftware application), the probability mapper/redistributor 418 maygenerate an initialization probability vector with probability valuesbiased towards wireless nodes at a point of entry (e.g., a front door).

The probability mapper/redistributor 418 passes the plurality ofinitialization probability vectors 420 to a multiplexor (or mux), whichalso receives the prior probability vector from a motion model. The dataprocessing apparatus may function, in part, as the multiplexor, such asshown by block 422. The multiplexor 422 is operable to select the priorprobability vector or one of the plurality of initialization probabilityvectors based on the set of motion indicator values, a configuration ofthe wireless communication network, or both. The selected probabilityvector is then passed to the Bayesian update engine, as shown in FIG. 4.In order to determine which probability vector to select, themultiplexor 422 receives a control input from a motion persistencecalculator, as shown by block 424. The motion persistence calculator 424receives the data structure 402, which includes the set of motionindicator values, and also receives a configuration of the wirelesscommunication network 426. Based on these inputs, the motion persistencecalculator 424 generates the control signal, which when received by themultiplexor 422, selects which of the prior probability vector or one ofthe plurality of initialization probability vectors is passed to theBayesian update engine. If motion is continuously detected by thewireless communication network (or motion detection system), the motionpersistence calculator 424 may keep passing a prior probability vectorthrough the multiplexor 422. In contrast, if motion is detected after aperiod of absence, the motion persistence calculator 424 may pass aninitialization probability vector through the multiplexor 422 thatcorresponds to a reset state. The data processing apparatus may alsofunction, in part, as the motion persistence calculator 424.

In some implementations, the data processing apparatus uses the selectedprobability vector and a set of motion indicator values associated witha second subsequent time frame to identify a location associated withmotion that occurred during the subsequent time frame. In particular,executes program instructions to generate, from a first probabilityvector received from the likelihood calculator 416 and a secondprobability vector received from the multiplexor 422, a thirdprobability vector that includes third values for each wireless node. Inparticular, the Bayesian update engine generates the third probabilityvector, as shown by block 428. The third values of the third probabilityvector represent probabilities of motion at the respective wirelessnodes during the time frame.

In some variations, the second probability vector is represented by aprobability vector, P(N_(i)), that includes probability values (orsecond values) representing a probability of motion at a wireless node,N_(i). The probability of motion at wireless node, N_(i), for P(N_(i))is independent of link activity along any of wireless links, L_(j), andmay also be independent of other factors. For example, and withreference to FIG. 3, the program instructions may cause the dataprocessing apparatus to define P(N_(i)) according to P(N_(i))={P(0),P(1), P(2)}. Here, P(N_(i)) has probability values of P(0), P(1), andP(2), which correspond to the probability of motion at (or proximate to)wireless nodes 0, 1, and 2, respectively.

In some variations, the third probability vector is represented byP(N_(i)|L_(j)), where N_(i) corresponds to the unique node identifierand L_(j) corresponds to the unique link identifier. The thirdprobability vector, P(N_(i)|L_(j)), includes third values that representa probability of motion at wireless node, N_(i), given link activityalong wireless link, L_(j). For example, if L_(j) corresponds towireless link 1 in the wireless communication network 300 of FIG. 3, therespective third values may then be represented by P(0|1), P(1|1), andP(2|1), where P(N_(i)|1)={P(0|1), P(1|1), P(2|1)}. Here, P(0|1)corresponds to a probability that link activity along wireless link 1results from motion at wireless node 0, P(1|1) corresponds to aprobability that link activity along wireless link 1 results from motionat wireless node 1, and P(2|1) corresponds to a probability that linkactivity along wireless link 1 results from motion at wireless node 2.

The third probability vector, P(N_(i)|L_(j)), may be determined by theBayesian update engine 428 according to Eq. (1):

$\begin{matrix}{{P( N_{i} \middle| L_{j} )} = \frac{{P( L_{j} \middle| N_{i} )} \cdot {P( N_{i} )}}{\sum\limits_{i}{{P( L_{j} \middle| N_{i} )}{P( N_{i} )}}}} & (1)\end{matrix}$where P(L_(j)|N_(i)) and P(N_(i)) are as described above for,respectively, the first probability vector from the likelihoodcalculator 416 and the second probability vector from the multiplexor422. Eq. (1) may allow the wireless communication network 300 (or dataprocessing apparatus) to determine the location of detected motion usingBayesian statistics. For example, if in the wireless communicationnetwork 300 of FIG. 3, the subset of wireless links includes onlywireless link 1 and P(1|N_(i))={1, 0.2, 0.9} based on the linklikelihood map, the program instructions may then cause the dataprocessing apparatus to calculate the third probability vector,P(N_(i)|1), according to:

${P( N_{i} \middle| 1 )} = {\frac{{P( 1 \middle| N_{i} )} \cdot {P( N_{i} )}}{\sum\limits_{i}{{P( 1 \middle| N_{i} )}{P( N_{i} )}}} = \frac{\{ {{1.0 \cdot 0.333},{0.2 \cdot 0.333},{0.9 \cdot 0.333}} \}}{( {1.0 \cdot 0.333} ) + ( {0.2 \cdot 0.333} ) + ( {0.9 \cdot 0.333} )}}$Such calculation results in P(N_(i)|1)={0.476, 0.095, 0.429}, with thethird values summing to unity, i.e., 0.476+0.095+0.429=1. P(N_(i)|1) maytherefore represent a probability distribution normalized to unity. InP(N_(i)|1), P(0|1) corresponds to the largest of the third values,indicating that motion detected by the wireless communication network300 along wireless link 1 has the highest probability of being locatedat (or proximate to) wireless node 0. Based on this value of P(0|1), theprogram instructions may cause the data processing apparatus to look upthe MAC address value of wireless node 0, and when found, output theresult (e.g., output 7f4440).

In some implementations, the data processing apparatus performs aniterative process for sequential time frames. For example, the dataprocessing apparatus may repeat the operations, over multiple iterationsfor respective time frames, of obtaining the set of motion indicatorvalues associated with a subsequent time frame, identifying the subsetof wireless links based on a magnitude of their associated motionindicator values relative to other motion indicator values in the set ofmotion indicator values, generating the count values for the wirelessnodes connected to the wireless communication network during thesubsequent time frame, generating the first probability vector based onthe count values and including values for the connected wireless nodes.In some implementations, the repeated operations include obtaining a setof motion indicator values associated with a prior time frame,generating a prior probability vector associated with the prior timeframe, generating a second probability vector by selecting the priorprobability vector or one of the plurality of initialization probabilityvectors to.

In some implementations, the repeated operations may include generatinga third probability vector based on the first values of the firstprobability vector and the second values of the second probabilityvector; identifying a wireless communication device associated with thehighest of the third values; and identifying, by operation of a dataprocessing apparatus, a location associated with the identified wirelesscommunication device as a location of the motion detected from thewireless signals exchanged during the subsequent time frame.

An output of the Bayesian update engine 428 may be fed into the motionmodel to generate the prior probability vector (or second probabilityvector), which is passed to the probability mapper/redistributor 418 andthe multiplexor 422. The data processing apparatus may function, inpart, as the motion model, as shown by block 430. The motion model 430may operate analogous to calculating probabilities on a trellis. FIG. 6presents a schematic diagram of an example motion model using a trellisrepresentation for three wireless nodes. At every time instant t, motionmay exist at any of the available wireless nodes. From time t to timet+1—shown in FIG. 6 as t₁ and t₂, respectively—motion can either remainat the same wireless node, or transition to any of the other wirelessnodes. In order to determine motion at time step t+1, the probabilitiesof motion existing on any of the wireless nodes in time step t areaggregated, which may include a matrix vector calculation. Probabilitiesthat motion now happens at n₁ in time step t+1 is given by thepossibilities of motion happening at n₁ in the past and staying at n₁,happening at n₂ in the past and moving to n₁, or happening at n₃ in thepast and moving to n₁. In other words, the motion at n₁ at time step t+1can be represented by a dot product. The entire operation for all threenodes at any time can be represented by a matrix vector calculation asshown. Each entry of the matrix is a transition probability of motion,transitioning from happening at N_(x) to N_(y).

FIG. 7 presents a schematic diagram of an example flow of probabilitiesin determining a location of motion detected by three wireless links ina wireless communication network. On the leftmost side is an initialprobability vector which assigns equal probabilities of motion to allwireless nodes in the wireless communication network. In the graph insetin the upper left, each pulse on the axis is to be read as a probabilityof motion happening at node N_(x) on the x-axis. On the rightmost side,motion indicator values are received, which specifying an amount ofexcitation on a wireless link. These values are converted into alikelihood function, which determines how likely each wireless node isto have triggered an observed link behavior. In the graph inset in themiddle right, a link-excitation likelihood graph presents a plot of alikelihood vector over the x-axis and for all possible wireless nodes.Using Bayesian formulation, the likelihood vector and the initialprobability vector are multiplied and a resulting product is divided bya normalizing constant obtained by performing marginalization over allwireless nodes. This calculation provides a probability of motion at awireless node given the link information at time step t+1. Thisprobability is used to form a decision on where the motion is mostlikely to be happening. The output probabilities are assigned to anode-motion probability vector as new probabilities, and then propagatedthrough the motion model, in preparation for the next iteration of theloop. The job of the motion model is to propagate these probabilitiesinto the next time step, based on the information of what is atransition probability of making a transition from N_(x) to N_(y) at anytime instant.

In some implementations, the wireless communication network may includea network topology, a motion topology, or both. The network topology isdefined by wireless links in the wireless communication network that areactive in a time frame. Such activity may be represented by an exchangeof data between two wireless nodes associated with an active wirelesslink in the time frame. As such, the network topology includes thewireless nodes associated with the active wireless links. By comparison,the motion topology is defined by active wireless links in the networktopology that become excited by motion of an object in the time frame.The motion topology includes the wireless nodes associated with theexcited wireless links and a connected state of those wireless nodes.The connected state is defined by a number of wireless nodes connectedto a wireless node of interest, such as through respective wirelesscommunication channels. Examples of the connected state includesingly-connected, doubly-connected, triply-connected, and so forth.

For example, FIG. 8 presents a schematic diagram of the example wirelesscommunication network 300 of FIG. 3, but in which the motion of anobject excites four wireless links. The motion of the object may occurduring a time frame. Features common to both FIG. 3 and FIG. 8 arerelated via coordinated numerals that differ in increment by fivehundred. The network topology of the example wireless communicationnetwork 800 is defined by wireless nodes N₀, N₁, and N₂ and wirelesslinks L₀₁, L₁₀, L₀₂, L₂₀, L₁₂ and L₂₁. A dashed arrow 806 indicatesmotion of the object near wireless node N₀, which excites wireless linksL₀₁, L₁₀, L₀₂, and L₂₀. The excited state of wireless links L₀₁, L₁₀,L₀₂, and L₂₀ is represented in FIG. 8 by dashed arrows.

The excited wireless links are part of wireless communication channels804 between wireless node N₀ and wireless nodes N₁ and N₂ and serve as abasis to define a motion topology. In particular, the motion topology ofthe example wireless communication network 800 is defined by wirelessnodes N₀, N₁, and N₂ and excited wireless links L₀₁, L₁₀, L₀₂, and L₂₀.The motion topology does not include wireless links L₁₂ and L₂₁, whichare not excited by the motion of the object. Two wireless communicationchannels 804 are present in the motion topology, i.e., one extendingbetween wireless nodes N₀ and N₁ and one extending between wirelessnodes N₁ and N₂. Wireless node N₀ is thus wirelessly connected to twoother nodes and has a connected state that is doubly-connected.Similarly, wireless nodes N₁ and N₂ are each connected to one other nodeand have respective connected states that are singly-connected (in themotion topology). Although FIG. 8 is presented in the context of asingle time frame, one or both of the network and motion topologies ofthe example communication network 800 can change over multipleiterations of the time frame.

In some variations, the wireless communication network 800 correspondsto a wireless mesh network and the wireless nodes N₀, N₁, and N₂correspond to access point (AP) nodes of the wireless mesh network. Theaccess point nodes may generate motion-sensing data based on wirelesssignals transmitted between respective pairs of the access point nodes,such as along wireless links L₀₁, L₁₀, L₀₂, L₂₀, L₁₂ and L₂₁ of thewireless communication channels 804. The motion-sensing data may begenerated in response to motion of an object in a space traversed by thewireless signals (e.g., as indicated by dashed arrow 806). However, themotion-sensing data may also be generated in the absence such motion.

Now referring back to FIG. 4, the likelihood calculator 416 generatesprobability vectors for the Bayesian update engine 428 based on countvalues for each wireless node connected to the wireless communicationnetwork during the time frame. FIG. 9 presents a flowchart 900 of anexample process for determining a location of motion based on a motiontopology of a wireless communication network. The flowchart 900 mayrepresent an optional portion of the flowchart 400 described in relationto FIG. 4 and may correspond to program instructions to be executed by adata processing apparatus of the wireless communication network. At astart of the example process, the data processing apparatus may receivefrom a node dictionary (e.g., the node dictionary 408 of FIG. 4) a listof unique wireless nodes present in the wireless communication networkduring a time frame. The data processing apparatus may also receive froma link equalizer (e.g., the link equalizer 414 of FIG. 4) a list ofwireless links identified as present in the wireless communicationnetwork during the time frame. The list of identified wireless linksincludes normalized motion indicator values for each wireless link. Thelist of unique wireless nodes and the list of identified wireless linksmay be stored in a database and used to define a network topology forthe wireless communication network.

The data processing apparatus may function in part as a likelihoodcalculator, as shown in block 902. In this capacity, the data processingapparatus may generate a probability vector in response to receiving thelist of unique wireless nodes and the list of identified wireless links.The probability vector is based on count values for each unique wirelessnode in the list of unique wireless nodes, as described previously inrelation to the likelihood calculator 414 of FIG. 4. The data processingapparatus may also function in part as a link aggregator/filter, asshown in block 904. The link aggregator/filter 904 receives the list ofunique wireless nodes and the list of identified wireless links, andusing the latter, determines which wireless links are being excited bymotion during the time frame. In some instances, the linkaggregator/filter 904 makes this determination using a minimumexcitation (or disturbance) threshold. The link aggregator/filter 904then compiles a list of excited wireless links.

The data processing apparatus may additionally function in part as thenode tagger, as shown in block 906. The node tagger 906 receives thelist of excited wireless links from the link aggregator/filter 904, andfor each excited wireless link in the list, determines the wirelessnodes defining the excited wireless link. For each unique wireless nodeso-determined, the node tagger 906 generates a probability vector thatincludes a probability value for each possible connected state of thedetermined wireless node. Examples of possible connected states includesingly-connected, doubly-connected, triply-connected, and so forth. Thenode tagger 906 then assigns a “tag” to each determined wireless nodeindicating the connected state of the determined wireless node duringthe time frame. In doing so, the node tagger 906 may generate, for thetime frame, a list of determined wireless nodes and their respective“tags”. In many instances, the “tag” assigned to a determined wirelessnode corresponds to the connected state having the highest probabilityin the probability vector.

In some implementations, after the “tags” have been assigned, the nodetagger 906 resolves a motion topology (or motion-sensing topology) ofthe wireless communication network for the time frame. To do so, thenode tagger 906 may use the “tag” assigned to each determined wirelessnode and the network topology of the wireless communication network. Themotion topology may be stored in a motion topology database thatincludes an identity of the excited wireless links, an identity of thedetermined wireless nodes, and the “tag” of each determined wirelessnode.

In some implementations, the node tagger 906 may repeat the operationsof determining wireless nodes, generating probability vectors, andassigning “tags” to update the “tag” associated with each determinedwireless node. Such repetition may allow the node tagger 906 to generateand maintain a “tag” database that includes all wireless nodes in thewireless communication network, their respective probability vectors,and their respective “tags”. The “tags” in the “tag” database may beupdated as the probability vectors change, e.g., as subsets of wirelesslinks are excited over successive time frames in response to motion ofan object.

The node tagger 906 passes the list of the determined wireless nodes andtheir respective “tags” to an adaptive modulator, which is shown byblock 908. The adaptive modulator 908 also receives a count-value datastructure from the likelihood calculator 902. The count-value datastructure associates each wireless node connected to the wirelesscommunication network during the time frame with a count value. Thecount value indicates how many excited wireless links are defined by thewireless node. The adaptive modulator 908 then compares the count valueof a determined wireless node with a threshold count value associatedwith the “tag” assigned to the wireless node. If the count value is lessthan the threshold count value, the wireless node is removed from thecount-value data structure. The threshold count value may represent aminimum number of excited wireless links necessary to consider aconnected state as participating in the detection of motion. Theadaptive modulator 908 repeats this comparison for each determinedwireless node to generate a modified count-value data structure. Themodified count-value data structure is then passed back to thelikelihood calculator 908, which uses the modified count-value datastructure to generate probability vectors for a Bayesian update engine(e.g., the Bayesian update engine 428 of FIG. 4). In this manner, theadaptive modulator 908 updates the count-value data structure based onthe motion topology (or motion-sensing topology) of the wirelesscommunication network. In many implementations, the count-value datastructure is updated adaptively over successive time frames.

In some implementations, the data processing apparatus executes programinstructions to modify the count-value data structure based on a motiontopology in a variable timeframe. The variable timeframe may be alteredin duration to accommodate a length of time that motion takes to excitewireless links in a wireless communication network. For example, if thewireless nodes N₁ and N₂ of FIG. 8 are separated by a large distance,motion 806 near wireless node N₀ may take a longer time to move fromwireless links L₂₀ and L₀₂ to wireless links L₀₁ and L₁₀ (e.g., due to alarger angular distance). If the time frame is not increased in durationto encompass the longer time, the motion topology is based only onwireless links L₂₀ and L₀₂ and the probability vector from thelikelihood calculator inaccurately weights a location of the motion 806equally between wireless nodes N₀ and N₂. Increasing the time frame toencompass the longer time allows the probability vector to moreaccurately weight the location of motion 806 towards wireless node N₀.

FIG. 10 presents a flowchart 1000 of an example process for determininga location of motion using a motion topology based on a variabletimeframe. The flowchart 1000 may represent an optional portion of theflowchart 400 described in relation to FIG. 4 and may correspond toprogram instructions to be executed by a data processing apparatus of awireless communication network. At a start of the example process, thedata processing apparatus may receive from a node dictionary (e.g., thenode dictionary 408 of FIG. 4) a list of unique wireless nodes presentin the wireless communication network during a time frame. The dataprocessing apparatus may also receive from a link equalizer (e.g., thelink equalizer 414 of FIG. 4) a list of wireless links identified aspresent in the wireless communication network during the time frame. Thelist of identified wireless links includes normalized motion indicatorvalues for each wireless link. The list of unique wireless nodes and thelist of identified wireless links may be stored in a database and usedto define a network topology for the wireless communication network.

The flowchart 1000 includes features analogous to those alreadydescribed in relation to the flowchart 900 of FIG. 9. However, theflowchart 900 includes additional features (or program instructions)that allow the data processing apparatus to determine the location ofmotion using the motion topology based on the variable timeframe. Inparticular, the data processing apparatus may execute programinstructions to function, in part, as an adaptive lag link aggregator,as shown in block 1010. The adaptive lag link aggregator 1010 receivesthe list of unique wireless nodes and the list of identified wirelesslinks, and using the latter, determines which wireless links are beingexcited by motion during the variable timeframe, t±τ. In doing so, theadaptive lag link aggregator 1010 generates a list of excited wirelesslinks that includes one instance of an excited wireless link for eachtime the excited wireless link is excited in the variable timeframe. Ifa number of instances exceeds a threshold number, the number ofinstances is set equal to the threshold number.

The adaptive lag link aggregator 1010 also determines a count value foreach unique wireless node based on the list of excited wireless links.The count value indicates how many excited wireless links—includinginstances thereof—are defined by the unique wireless node. Using thecount values, the adaptive lag link aggregator 1010 generates an adaptedcount-value data structure that associates each unique wireless nodewith a count value. The adaptive lag link aggregator 1010 passes theadapted count-value data structure to a link aggregator with lag/filter,as shown in block 1004. The adaptive lag link aggregator 1010 alsopasses the list of excited wireless links to a node tagger, as shown inblock 1006. The link aggregator with lag/filter 1004 and the node tagger1006 may operate analogously to the link aggregator/filter 904 and nodetagger 906 described in relation to FIG. 9.

In many implementations, the adaptive lag link aggregator 1010 builds adelay line. The delay line not only keeps track of the instantaneousexcited link vector, but also a number (N) of last excited link vectors.The delay line allows the data processing apparatus to capture a pair ofwireless links that are not triggered or excited together (e.g., due toa pathology) and enable them to be aggregated in the same time frame.Such aggregation allows wireless links belonging to one wireless node toappear in the same buffer while simultaneously pointing to the “true”motion topology of a wireless node. The aggregation may also assist thenode tagger 1006 in accurately assigning “tags”. Depending oncircumstance, the aggregation can occur using a number of differentprocesses. For example, the adaptive lag link aggregator 1010 candetermine all unique wireless links in the N element buffer, and thenform an output based on all of the unique wireless links. In anotherexample, the adaptive lag link aggregator 1010 can use the threemost-often excited wireless links in the buffer. Other examples ofprocess are possible. However, in general, the aggregation process canbe employed to feed more nuanced versions of excited wireless links tothe node tagger 1006.

The delay line may also be applicable for calculating a likelihood,e.g., to allow the motion to excite all relevant wireless linksconnected to a wireless node. The likelihood calculator 1002 also needsthe frequency of wireless nodes appearing in the excited wireless linksin order to compute the likelihood of motion being at the wireless node.This aggregation can be performed in the same way as described above.Alternatively, a different criterion may be selected, though fashionedalong the same lines. In FIG. 10, the adaptive lag link aggregator 1010and the link aggregator with lag filter 1004 are shown as two differentboxes, where one is being copied into the other. These functional unitscould be mirror images of each other, or they could be slightlydifferent, depending upon as optimization selected by a design (e.g., inprogram instructions). For example, in the later alternative, such aswith the link aggregator with lag filter 1004, a designer can take thetwo instances of a wireless link's excitation for aggregation, ratherthan unique instances only. If a subset of wireless links is aggregated,the aggregation can accentuate the likelihood function (or frequency ofwireless nodes appearing) towards one or more particular wireless nodesin the wireless communication network. Such bias can have favorableconvergence outcomes for the Bayesian inferencing conducted by aBayesian update engine.

The data processing apparatus may also function in part as a topologicalinconsistency calculator, as shown in block 1012. The topologicalinconsistency calculator 1012 tracks a duration of the variabletimeframe over time to remove inconsistencies between the motion andnetwork topologies of the wireless communication network. In particular,the topological inconsistency calculator 1012 compares the motiontopology with the network topology during the variable timeframe todetermine a connectivity difference. The motion topology is receivedfrom the node tagger 1006, and in some instances, includes a motiontopology database. If the connectivity difference is greater than athreshold difference, the topological inconsistency calculator 1012sends a signal to the adaptive lag link aggregator 1010 to increase theduration of the variable timeframe. The signal may specify an incrementvalue, which is represented in FIG. 10 as T. In many instances, thetopological inconsistency calculator 1012 repeatedly sends signals tothe adaptive lag link aggregator 1010 to iteratively increase theduration of the variable timeframe (e.g., iteratively increase themagnitude of τ) until the connectivity difference is equal to or lessthan the threshold difference. The duration of the variable timeframemay have a maximum duration, at which, the topological inconsistencycalculator 1012 stops sending signals to the adaptive lag linkaggregator 1010. In some implementations, if the connectivity differenceis equal to or less than the threshold difference, the topologicalinconsistency calculator 1012 sends a signal to the adaptive lag linkaggregator 1010 to decrease the duration of the variable timeframe. Thesignal may specify a decrement value (e.g., x). It will be appreciatedthat, by controlling the variable timeframe used by the adaptive laglink aggregator 1010, the topological inconsistency calculator 1012allows the data processing apparatus to adaptively adjust to a length oftime that motion takes to excite wireless links in the wirelesscommunication network.

In many variations, the connectivity difference may be determined usinga metric (e.g., a probability value) based on a connected state of awireless nodes in the motion and network topologies. For example, theconnectivity difference may be determined based on a probability of awireless node being in a doubly-connected state in the motion topologyversus a probability of the wireless node being in a doubly-connectedstate in the network topology. The latter value may be calculated fromthe observed link vector available at the input of the flowchart 1000.The observed link vector indicates which of the wireless links in thewireless communication network are reporting their motion indicators. Ifa wireless node appears in a doubly-connected state often in thisreported vector—e.g., all four wireless links are connected to thewireless node are present all the time—then the wireless node has a highprobability of being doubly-connected in the network topology. Incontrast, the probability of the wireless node being doubly-connected inthe motion topology is based on the excited wireless links, not thereported wireless links. If a wireless node is connected to all fourwireless links, and all of those four wireless links get excitedsimultaneously and often, the wireless node has a high probability ofbeing doubly-connected in the motion topology.

FIG. 11 presents an example formula, with graph, for determining aprobability of a wireless node being in a doubly-connected state in amotion topology. The example formula corresponds to a calculationshowing how a “tag” for a wireless node is populated. Such population isbased on how many excited wireless links are perturbed during a motionevent associated with the wireless node. An example metric may beassociated with this formula, and more specifically, a ratio calculatedby divide a first probability (Pr₁) with a second probability (Pr₂),i.e., Pr₁/Pr₂. The first probability represents the probability of awireless node being doubly-connected in a motion topology, the secondprobability represents the probability of the wireless node beingdoubly-connected in a network topology. The example metric can bedetermined and aggregated for all wireless nodes in a wirelesscommunication network, such as through either multiplying for allwireless nodes or adding for all wireless nodes. If this metric is equalto one, the first and second probabilities agree, and the topologicalinconsistency calculator 1012 is does not need to increase a duration ofthe variable timeframe. (Or alternatively, other processes are notneeded to align them.) If the metric is less than one, first probabilityis lower and needs to be boosted to align the two probabilities (e.g.,increasing the duration of the variable timeframe).

In some implementations, a method for determining a location of motionincludes obtaining motion-sensing data from access point (AP) nodes of awireless mesh network. The motion-sensing data is based on wirelesssignals transmitted between respective pairs of the AP nodes. In someinstances, the motion-sensing data includes motion indicator values,which may be computed from channel information derived from the wirelesssignals. However, the motion-sensing data may include other types ofdata, such as a list of unique wireless nodes during a time frame and alist of wireless links identified as present in the wireless meshnetwork during the time frame.

The method also includes identifying a motion-sensing topology (ormotion topology) of the wireless mesh network. The motion-sensingtopology is identified based on tags assigned to respective AP nodes.Each tag indicates a connected state of a respective AP node. The methodadditionally includes generating a probability vector based on themotion-sensing data and the motion-sensing topology. The probabilityvector includes values that represent probabilities of motion of anobject at respective AP nodes. In many instances, generation of theprobability occurs by operation of the data processing apparatus, whichexecutes program instructions corresponding to one or more of theflowcharts depicted in FIGS. 4, 9, and 10. A location of the motion ofthe object is determined based on the probability vector. In manyimplementations, the method includes repeating the operations, overmultiple iterations for respective time frames, of obtainingmotion-sensing data, identifying a motion-sensing topology, generating aprobability vector, and determining a location of the motion.

In some implementations, generating the probability vector includesgenerating a count-value data structure based on the motion-sensingdata. The count-value data structure includes count values forrespective AP. Each count value indicates a number of wireless linksdefined by a respective AP node that were, according to themotion-sensing data, excited by motion. Generating the probabilityvector also includes modifying the count-value data structure based onthe motion-sensing topology and generating the probability vector basedon the modified count-value data structure. In further implementations,identifying the motion-sensing topology includes identifying, based onthe motion-sensing data, the wireless links excited by motion andgenerating state probability vectors for the respective AP nodes. Eachstate probability vector includes values for connected states of arespective AP node, the value for each connected state representing aprobability of the AP node being in the connected state. Identifying themotion-sensing topology also includes assigning the tags to the AP nodesbased on the respective state probability vectors.

The values of the state probability vectors may include a firstprobability value and a second probability value. For example, the firstprobability value may represent a probability that an AP node is in asingly-connected state, and the second probability vector may representa probability that the AP node is in a doubly-connected state. Thevalues of the state probability vector may also include a thirdprobability value representing a probability that the AP node is in atriply-connected state. Other probability values and correspondingconnected states are possible. In many implementations, the tag assignedto each respective AP node indicates a connected state associated with ahighest probability value in the state probability vector for therespective node.

In implementations where generating probability vector includesmodifying the count-value data structure, such modification may includecomparing the count value for a first AP node with a threshold countvalue and removing the first AP node from the count-value data structureif the count value is less than the threshold count value. The thresholdcount value is associated with the tag assigned to the first AP node andmay represent a minimum number of excited wireless links necessary toconsider a connected state as participating in the detection of motion.

In implementations where generating probability vector includesgenerating the count-value data structure, such generation may includegenerating a list of wireless links in the wireless mesh network thatwere, according to the motion-sensing data, excited by motion. Thegeneration may also include generating a list of the AP nodes thatincludes an instance of an AP node for each instance, in the list ofwireless links, a wireless link is defined by the AP node. Thegeneration may additionally include setting the count value for therespective AP nodes equal to a number of times the respective AP nodeappears in the list of AP nodes.

In some implementations, identifying the motion-sensing topologyincludes identifying a difference between a first estimatedmotion-sensing topology and a network topology based on data collectedover a first time duration. Identifying the motion-sensing topology alsoincludes identifying a match between a second estimated motion-sensingtopology and the network topology based on data collected over a second,longer time duration. The second estimated motion-sensing topology isthen selected as the motion-sensing topology.

In some implementations, the wireless mesh network includes one or moreleaf nodes in addition to the AP nodes. In these implementations,determining the location of the motion includes identifying one of theAP nodes or one of the leaf nodes as the location of the motion. In someimplementations, the motion-sensing data is based on wireless signalstransmitted between the respective pairs of the AP nodes during a firsttime frame, and the probability vector includes a first probabilityvector representing the first time frame. In such implementations,determining the location of the motion includes using a Bayesiancalculator to determine the location of the motion based on the firstprobability vector and a prior probability vector representing a priortime frame.

The aforementioned methods and their variations may be implemented usinga system that includes the wireless mesh network and its AP nodes (orleaf nodes, if present), one or more processors, and memory storinginstructions that, when executed by the one or more processors, causesthe system to perform operations of the methods and their variations.The aforementioned methods and their variations may also be stored asinstructions on a non-transitory computer-readable medium. Theinstructions, when executed by a data processing apparatus, cause thedata processing apparatus to perform the operations of the methods andtheir variations.

It will be appreciated that a wireless communication network mayreconfigure its topology to improve network performance, such as toincrease throughput or reduce latency between wireless nodes (or leafnodes connected to the wireless nodes). Such reconfiguration may resultin the wireless communication network having different topologies atdifferent time frames. In some implementations, the data processingapparatus executes program instructions to determine a location ofmotion based on motion indicator values that are collected duringdifferent time frames, such as during a subsequent time frame and aprior time frame. The subsequent time frame and the prior time framecorrespond to different topologies and may allow the data processingapparatus to determine the location of motion more accurately than ifmotion indicator values were used only from the subsequent time frame.

For example, FIGS. 12A & 12B present schematic diagrams of an examplewireless communication network 1200 having different network topologiesin, respectively, a subsequent time frame and a prior time frame. Theexample wireless communication network 1200 includes three wirelessnodes 1202 labeled N₀, N₁, and N₂. Wireless nodes N₀ and N₁ are disposedadjacent a physical barrier 1204 (e.g., a wall) and wireless node N₂ isdisposed a distance from the physical barrier 1204. A dashed arrow 1206indicates motion of an object, which is predominantly located nearwireless node N₀. The object is constrained from moving into a spacebetween wireless nodes N₀ and N₁ by the physical barrier 1204. As such,wireless links L₀₁ and L₁₀ remain unexcited by the motion 1206 of theobject. The data processing apparatus (or node tagger) is thus unable toestablish a motion topology in which wireless node N₀ isdoubly-connected. Instead, the motion topology is based on wirelesslinks L₂₀ and L₀₂, and wireless nodes N₀ and N₂ are assigned with “tags”indicating their connected states as singly-connected. The resultingprobability vector then inaccurately weights the location of motionequally between wireless nodes N₀ and N₂ despite the motion 1206 beingpredominantly located near wireless node N₀.

However, in the prior time frame, the example wireless communicationnetwork 1200 had a network topology in which wireless node N₂ wasdoubly-connected, as shown in FIG. 12B. Motion near wireless node N₂would therefore excite four wireless links during this time frame (i.e.,wireless links L₀₂, L₂₀, L₂₁, and L₁₂). The resulting motion topologydetermined would thus indicate, with high probability, adoubly-connected state for wireless node N₂. If motion occurred againnear wireless node N₂ (but still with the network topology of FIG. 12B),motion indicator values from pairs of wireless links L₀₂/L₂₀ and L₂₁/L₁₂could be collected and used to generate “deep tags” for each pair. The“deep tag” for wireless link pair L₀₂/L₂₀, in particular, could bereferenced in the subsequent time frame to help resolve the location ofmotion between wireless nodes N₀ and N₂.

In some variations, the wireless communication network 1200 correspondsto a wireless mesh network and the wireless nodes N₀, N₁, and N₂correspond to access point (AP) nodes of the wireless mesh network. Theaccess point nodes may generate motion-sensing data based on wirelesssignals transmitted between respective pairs of the access point nodes,such as along wireless links L₀₁, L₁₀, L₀₂, L₂₀, L₁₂ and L₂₁. Themotion-sensing data may be generated in response to motion of an objectin a space traversed by the wireless signals (e.g., as indicated bydashed arrow 1206). However, the motion-sensing data may also begenerated in the absence such motion.

FIG. 13 presents a flowchart 1300 of an example process for determininga location of motion based on a prior topology of a wirelesscommunication network. The flowchart 1300 may represent an optionalportion of the flowchart 400 described in relation to FIG. 4 and maycorrespond to program instructions to be executed by a data processingapparatus of a wireless communication network. At a start of the exampleprocess, the data processing apparatus may receive from a nodedictionary (e.g., the node dictionary 408 of FIG. 4) a list of uniquewireless nodes present in the wireless communication network during atime frame. The data processing apparatus may also receive from a linkequalizer (e.g., the link equalizer 414 of FIG. 4) a list of wirelesslinks identified as present in the wireless communication network duringthe time frame. The list of identified wireless links includesnormalized motion indicator values for each wireless link. The list ofunique wireless nodes and the list of identified wireless links may bestored in a database and used to define a network topology for thewireless communication network.

The flowchart 1300 includes features analogous to those alreadydescribed in relation to the flowchart 1000 of FIG. 10. Featuresanalogous to both FIG. 13 and FIG. 10 are related via coordinatednumerals that differ in increment by two hundred. However, the flowchart1300 includes additional features (or program instructions) that allowthe data processing apparatus to determine the location of motion basedon the prior topology. In particular, the data processing apparatus mayexecute program instructions to function, in part, as an adaptivemodulator, as shown in block 1308. The adaptive modulator 1308 mayfunction analogously to the adaptive modulator 1008 of FIG. 10, but alsoidentifies a wireless node as stable when a probability value associatedwith its connected state is above a threshold probability. To do so, theadaptive modulator 1308 may query a “tag” database to retrieve aprobability vector for all wireless nodes in the wireless communicationnetwork. The adaptive modulator 1308 also identifies wireless linksassociated with each stable wireless node. If all wireless linksassociated with a stable wireless node are being excited by motion, theadaptive modulator 1308 sends a first signal to a deep node tagger tosample motion indicator values from pairs of excited wireless links.

The data processing apparatus may also function in part as the deep nodetagger, as shown in block 1314. In response to the first signal, thedeep node tagger 1314 samples motion indicator values from pairs ofexcited wireless links associated with the stable wireless node. Eachpair of excited wireless links defines a wireless communication channelbetween the stable wireless node and another wireless node, and all suchpairs are sampled. The deep node tagger 1314 generates a probabilitydensity function (PDF) for each pair of excited wireless links from itsrespective sampled motion indicator values. The deep node tagger 1314then compiles a “deep tag” that includes an identity of the stablewireless node, an identity of a pair of excited wireless links, and arespective probability density function. The “deep tag” may be stored ina “deep tag” database as a recorded “deep tag”.

For example, and with reference to FIG. 12B, wireless node N₂ may beidentified by the adaptive modulator 1308 as a stable wireless node withall associated wireless links being excited by motion. The adaptivemodulator 1309 then sends a first signal to the deep node tagger 1314,which samples motion indicator values from the pairs of wireless linksL₀₂/L₂₀ and L₂₁/L₁₂. The deep node tagger 1314 then generates two “deeptags”, one for each pair of wireless links as shown below:{N ₂ ; L ₀₂ , L ₂₀ ;PDF(L ₀₂ ,L ₂₀)}{N ₂ ; L ₂₁ , L ₁₂ ;PDF(L ₂₁ , L ₁₂)}The two “deep tags” may subsequently be stored as recorded “deep tags”in in the “deep tag” database for future reference, such as during thesubsequent time frame of FIG. 12A.

After the topology of the wireless communication network has changed,such as in a subsequent time frame, the adaptive modulator 1308 mayidentify a wireless node as inconsistent. In particular, the adaptivemodulator 1308 may determine that a motion topology associated with thewireless node is persistently inconsistent with a network topologywithin a variable timeframe. Such persistent inconsistency may resultfrom the topological inconsistency calculator 1312 increasing a durationof a variable timeframe to a maximum duration. The adaptive modulator1308 then identifies a pair of wireless links associated with theinconsistent wireless node that is being excited by motion. The adaptivemodulator 1308 also queries the “deep tag” dataset to find a recorded“deep tag” that references the identified pair of wireless links and asecond wireless node different from the inconsistent wireless node(i.e., the pair of wireless links communicatively couple theinconsistent wireless node and the second wireless node). The adaptivemodulator 1308 then sends a second signal to the deep node tagger 1314to sample motion indicator values from the identified pair of wirelesslinks.

In response to the second signal, the deep node tagger 1314 samplesmotion indicator values from the identified pair of wireless links andgenerates a corresponding probability density function. The deep nodetagger 1314 then creates a “deep tag” associating the inconsistentwireless node with the identified pair of wireless links andcorresponding probability density function. This “deep tag” serves as atest “deep tag” that is passed back to the adaptive modulator 1308.

After receiving the test “deep tag” from deep node tagger 1314, theadaptive modulator 1308 determines a distance between the probabilitydensity function of the recorded “deep tag” and the probability densityfunction of the test “deep tag”. For example, the adaptive modulator1308 may compute a Kullback-Leibler divergence between the probabilitydensity functions to determine the distance. If the distance is lessthan or equal to a distance threshold, the adaptive modulator 1308modifies a link likelihood map to include likelihood values biasedtowards the second wireless node. If the distance is greater than thedistance threshold, the adaptive modulator 1308 modifies a linklikelihood map to include likelihood values biased towards theinconsistent wireless node. The modified link likelihood map is thenpassed to the likelihood calculator 1302, which uses the modified linklikelihood map to generate probability vectors for a Bayesian updateengine (e.g., the Bayesian update engine 428 of FIG. 4).

In some implementations, a method for determining a location of motionincludes storing first motion-sensing statistics derived from firstmotion-sensing data associated with a first time frame. The firstmotion-sensing statistics may include a “deep tag” that references anidentity of a stable wireless node, pairs of excited wireless linksdefined in part by the stable wireless node, and respective probabilitydensity functions. Other statistics are possible. The firstmotion-sensing data is based on wireless signals transmitted betweenrespective pairs of access point (AP) nodes in a wireless mesh networkduring the first time frame while the wireless mesh network operates ina first motion-sensing topology (or first motion topology). In someinstances, the first motion-sensing data includes motion indicatorvalues, which may be computed from channel information derived from thewireless signals. However, the first motion-sensing data may includeother types of data, such as a list of unique wireless nodes during thefirst time frame and a list of wireless links identified as present inthe wireless mesh network during the first time frame.

The method also includes obtaining second motion-sensing data based onwireless signals transmitted between respective pairs of the AP nodesduring a second, subsequent time frame while the wireless networkoperates in a second, distinct motion-sensing topology (or second motiontopology). The second motion-sensing statistics may include a test “deeptag” that references an identity of an inconsistent wireless node, pairsof excited wireless links defined in part by the inconsistent wirelessnode, and respective probability density functions. Other statistics arepossible. The second motion-sensing data is based on wireless signalstransmitted between respective pairs of AP nodes in the wireless meshnetwork during the second, subsequent time frame while the wireless meshnetwork operates in the second motion-sensing topology (or second motiontopology). In some instances, the second motion-sensing data includesmotion indicator values, which may be computed from channel informationderived from the wireless signals. However, the second motion-sensingdata may include other types of data, such as a list of unique wirelessnodes during the second time frame and a list of wireless linksidentified as present in the wireless mesh network during the secondtime frame.

In in response to detecting an inconsistency associated with the secondmotion-sensing topology—e.g., an inconsistency between the secondmotion-sensing topology and a network topology of the wireless meshnetwork—the method includes obtaining second motion-sensing statisticsderived from the second motion-sensing data and comparing the firstmotion-sensing statistics with the second motion-sensing statistics. Themethod additionally includes generating a probability vector based onthe comparison. The probability vector includes values that representprobabilities of motion of an object at respective AP nodes during thesecond time frame. In many instances, generation of the probabilityoccurs by operation of the data processing apparatus, which executesprogram instructions corresponding to one or more of the flowchartsdepicted in FIGS. 4, 10, and 13. A location of the motion of the objectduring the second time frame is then determined based on the probabilityvector. In many implementations, the method includes repeating theoperations, over multiple iterations for respective second time frames,of obtaining second motion-sensing data, detecting an inconsistency,generating a probability vector, and determining a location of motion.

In some implementations, the method includes identifying a set ofwireless links in the wireless mesh network that were, according to thesecond motion-sensing data, excited by motion during the second timeframe. The second motion-sensing statistics include test deep tagsassociated with the identified set of wireless links. Each test deep tagincludes a respective test probability density function associated withthe second time frame. The first motion-sensing statistics includereference deep tags associated with the identified set of wirelesslinks. Each reference deep tag includes a respective referenceprobability density function associated with the first time frame. Inthese implementations, the method may include generating the testprobability density functions based on sampling subsets of the firstmotion-sensing data and generating the reference probability densityfunctions based on sampling subsets of the second motion-sensing data.In these implementations, the method may also include generating acount-value data structure that includes count values for respective APnodes. Each count value indicates a number of wireless links defined bya respective AP node that were excited by motion during the second timeperiod. The count-value data structure is then modified based on acomparison between the test deep tags and the reference deep tags, andthe probability vector is generated based on the modified count-valuedata structure. In some instances, modifying the count-value datastructure includes decreasing the count value for an AP node if adifference between the test deep tag and the reference deep tag isgreater than a threshold difference. In some instances, modifying thecount-value data structure includes increasing the count value for an APnode if a difference between the test deep tag and the reference deeptag is less than a threshold difference.

In some implementations, comparing the first motion-sensing statisticswith the second motion-sensing statistics includes computing aKullback-Leibler divergence between a test probability density functionand a reference probability density function. In some implementations,the method includes identifying the first motion-sensing topology basedon first tags assigned to respective AP nodes. Each of the first tagsindicates a connected state of a respective AP node. In theseimplementations, the method also includes identifying the secondmotion-sensing topology based on second tags assigned to respective APnodes. Each of the second tags indicates a connected state of arespective AP node.

In some implementations, detecting an inconsistency associated with thesecond motion-sensing topology includes detecting that the second-motionsensing topology does not match a network topology of the wireless meshnetwork during the second time frame. In some implementations, thewireless mesh network comprises one or more leaf nodes in addition tothe AP nodes. In these implementations, determining the location of themotion includes identifying one of the AP nodes or one of the leaf nodesas the location of the motion.

The aforementioned methods and their variations may be implemented usinga system that includes the wireless mesh network and its AP nodes (orleaf nodes, if present), one or more processors, and memory storinginstructions that, when executed by the one or more processors, causesthe system to perform operations of the methods and their variations.The aforementioned methods and their variations may also be stored asinstructions on a non-transitory computer-readable medium. Theinstructions, when executed by a data processing apparatus, cause thedata processing apparatus to perform the operations of the methods andtheir variations.

Now referring to FIG. 14, a schematic diagram is presented of an examplewireless communication network 1400 having a wireless communicationchannel with direct and indirect propagation pathways. The examplewireless communication network 1400 includes three wireless nodes 1402labeled N₀, N₁, and N₂ that are connected in a star fashion. A networktopology of the example wireless communication network 1400 includes afirst wireless communication channel 1404 between wireless nodes N₀ andN₁ and a second wireless communication channel 1406 between wirelessnodes N₀ and N₂. In the network topology, wireless node N₀ has adoubly-connected state and wireless nodes N₁ and N₂ each have singlyconnected states. However, the first communication channel 1404 is splitinto direct and indirect propagation paths. The direct propagation pathmore or less directly communicatively couples wireless nodes N₀ and N₁and includes wireless links L₁₀ ¹ and L₀₁ ¹. The indirect propagationpath communicatively couples wireless nodes N₀ and N₁ through a spaceadjacent wireless node N₂ and includes wireless links L₁₀ ² and L₀₁ ².The network topology of the example wireless communication network shownin FIG. 14 may result from an indoor environment that includes areflector.

In situations where motion occurs near wireless node N₁, as shown bydashed arrow 1408, wireless links L₁₀ ¹ and L₀₁ ¹ will be excitedsubstantially over wireless links L₁₀ ² and L₀₁ ². This excitation isconformant with the singly-connected state of wireless node N₁ in thenetwork topology. However, in situations where motion occurs nearwireless node N₂, as shown by dashed arrow 1410, wireless links L₁₀ ¹and L₀₁ ¹ and wireless links L₁₀ ² and L₀₁ ² will both be excited. Thisexcitation implies a doubly-connected state for wireless node N₂ that isnot conformant to the singly-connected state of wireless node N₂ in thenetwork topology. Moreover, due to the excitation, the motion topologyof the example wireless communication network 1400 has moredoubly-connected wireless nodes than the network topology.

In some variations, the wireless communication network 1400 correspondsto a wireless mesh network and the wireless nodes N₀, N₁, and N₂correspond to access point (AP) nodes of the wireless mesh network. Theaccess point nodes may generate motion-sensing data based on wirelesssignals transmitted between respective pairs of the access point nodes,such as along wireless links L₀₁, L₁₀, L₁₂, L₂₀, L₁₂ and L₂₁ of thewireless communication channels 1404, 1406. The motion-sensing data maybe generated in response to motion of an object in a space traversed bythe wireless signals (e.g., as indicated by dashed arrow 1408 or dashedarrow 1410). However, the motion-sensing data may also be generated inthe absence such motion.

FIG. 15 presents a flowchart 1500 of an example process for determininga location of motion based on a matrix decomposition of motion indicatorvalues. The flowchart 1500 may represent an optional portion of theflowchart 400 described in relation to FIG. 4 and may correspond toprogram instructions to be executed by a data processing apparatus of awireless communication network. At a start of the example process, thedata processing apparatus may receive from a node dictionary (e.g., thenode dictionary 408 of FIG. 4) a list of unique wireless nodes presentin the wireless communication network during a time frame. The dataprocessing apparatus may also receive from a link equalizer (e.g., thelink equalizer 414 of FIG. 4) a list of wireless links identified aspresent in the wireless communication network during the time frame. Thelist of identified wireless links includes normalized motion indicatorvalues for each wireless link. The list of unique wireless nodes and thelist of identified wireless links may be stored in a database and usedto define a network topology for the wireless communication network.

The flowchart 1500 includes features analogous to those alreadydescribed in relation to the flowchart 1000 of FIG. 10. Featuresanalogous to both FIG. 15 and FIG. 10 are related via coordinatednumerals that differ in increment by two hundred. However, the flowchart1500 includes additional features (or program instructions) that allowthe data processing apparatus to determine the location of motion basedon the prior topology.

In parallel with the node tagger process path, the flowchart 1500includes a second parallel process path. The second parallel processpath is operable to distinguish between wireless nodes sharing a commonconnected state, such as the doubly-connected state of wireless nodes N₀and N₂ in the motion topology shown by FIG. 14, and modify thelikelihood function accordingly. The data processing apparatus mayfunction in part as a link filter, which filters the wireless linksassociated with both of the doubly connected nodes. That is, the linkfilter selects those links, only when all four of them show excitation.Then it forms a correlation matrix from that link data.

In the present example, correlations within the correlation matrix comefrom two kinds of disturbances, a disturbance at wireless node N₀ and adisturbance at node N₂. These two disturbances get aggregated into thecorrelation matrix, and from a decomposition of the correlation matrix,two different flavors of the disturbances can be generated, e.g., twodifferent orthogonal components of the correlation matrix. Thedecomposition of the correlation matrix may help determine two uniquekinds of vectors (of link excitation data) that can explain all theobserved variation whenever the four links are triggered. The variationis aggregated by summing together the link vectors when they have fourexcited elements in them, then decompose the correlation matrix to findindividual components creating that variation, and then projectingagainst those components to determine which component is the observedexcitation closest to, and then assigning a likelihood based on thatcomponent's properties. The flowchart 1500 shows the process being done.

In second parallel process path, a matrix correlator takes the vector offour link excitation data, takes an outer product of it (e.g., to createa matrix), and sums it with the previous sum of outer products to createa running average of the correlation matrix. Then the correlation matrixis decomposed. This decomposition is triggered by the topologicalinconsistency calculator which now has two outputs instead of one.Previously, the topological inconsistency calculator was only triggeringwhen the number of motion-connected nodes was less than the networkconnected nodes. But now it is also triggering in the oppositedirection, for example, when it finds the number ofmotion-doubly-connected nodes to be higher than thenetwork-doubly-connected nodes. When the topological inconsistencycalculator determines that such a discrepancy exists, it then triggersthe need to separate these wireless nodes based on something other thanthe motion-triggered wireless link behavior. At that instance, ittriggers the matrix decomposition of the correlation matrix to happen,which leads to the formation of eigen components (or eigen vectors) ofthe matrix. The eigen components are then assigned tags, based on theirspecial properties. The purpose of the tags is to assign one eigencomponent (or eigen vector) to wireless node N₀ and the other eigencomponent (or eigen vector) to wireless node N₂. Now when a new linkexcitation vector arrives carrying motion excitation on all four links,the data processing apparatus executes program instructions project thenew link excitation vector (by computing the dot product) against boththe component vectors. The likelihood is assigned on the basis of whichdot product wins. The winning product's associated eigen-component-nodeis assigned a higher likelihood, and the loosing product'seigen-component-node is assigned a lower likelihood.

The formula below shows the matrix formation and the decomposition andthe node assignment to eigen vectors:

${ {\begin{bmatrix} N_{0}arrow N_{1}  \\ N_{1}arrow N_{0}  \\ N_{0}arrow N_{2}  \\ N_{2}arrow N_{0} \end{bmatrix} = {\begin{bmatrix}L_{01} \\L_{10} \\L_{02} \\L_{20}\end{bmatrix} \sim {\begin{bmatrix}x_{1} \\x_{2} \\x_{3} \\x_{4}\end{bmatrix} + \begin{bmatrix}0 \\0 \\\delta_{3} \\\delta_{4}\end{bmatrix} + \begin{bmatrix}\delta_{1} \\\delta_{2} \\0 \\0\end{bmatrix}}}} \} R_{xx}} =  {E( {XX^{T}} )}arrow {S\; V\;{D( R_{xx} )}}arrow{UAV}  $In the formula, the leftmost column presents the denomination of all thewireless links present in the example wireless communication network.When all these wireless links get triggered, the link filter operates tofilter that signal and assign it a vector symbol x, which consists offour values as listed, i.e., x₁, x₂, x₃, and x₄. Such a vector onaverage may be composed of two components (over time). In some cases,wireless node N₂ generates such a vector. In some cases, wireless nodeN₀ generates such a vector. However, the properties of the vectors areslightly different. For example, when wireless node N₂ is triggered,wireless links L₀₂ and L₂₀ are triggered more than wireless links L₀₁and L₁₀. This is because only a component of wireless links L₀₁ and L₁₀passes through wireless node N₂. Most energy of that wireless link ispassing through the other path which does not go through wireless nodeN₂. Hence excitation at wireless node N₂ does not create the same kindof perturbation as it creates in wireless links L₀₂ and L₂₀. This factis shown by putting the +δ symbols in the place of two more excitedwireless links L₀₂ and L₂₀. The purpose is not to show that thecomponents are equal, but to demonstrate that, on average, they will behigher, when the excitation is coming wireless node N₂ (e.g., motionoccurring near wireless node N₂), as opposed to excitation coming fromwireless node N₀. In this way, the second parallel process path candistinguish how to assign the components.

The three right-most columns of the formula show the form anddecomposition of the matrix, and x represents a column vector of linkexcitations. The column vector is multiplied by a transposed version ofitself to create a matrix which is averaged, as shown by the expectationoperator E(XX^(T)). In some instances, the average value is subtractedfrom x before forming the outer product. Such subtraction may benecessary if x is a non-zero mean vector. Once matrix formation is done,a singular value decomposition (SVD) splits the matrix into itseigen-components, which can be extracted from the matrix U at itsoutput. Each column of U contains one eigen-component. The first twocolumns of U are taken to look for two eigen-components. In thecomponents, the data processing apparatus determines which link pairexcitations are higher. If link pair excitations connected to wirelesslinks L₀₂ and L₂₀ are higher, the vector is assigned to node wirelessnode N₂. A similar process can be applied to make an assignment based onthe components of wireless links L₀₁ and L₁₀.

In this example, wireless node N₂ contends with wireless node N₀. Motionnear wireless node N₁ will only excite two wireless links, hencewireless node N₁ will be classified as having singly-connected state inthe motion topology and will have no incompatibility with the networktopology. However, wireless nodes N₀ and N₂ need arbitration. Hence, thewireless links associated with wireless node N₁, i.e., wireless linksL₀₁ and L₁₀, may be used to assign the eigen tags. Motion at wirelessnode N₀ will excite both the multipath components of wireless links L₀₁and L₁₀ (as opposed to only one of them being excited with motion nearwireless node N₂). Since both components are being excited, themagnitude of that excitation will be higher than the other two wirelesslink components in one of the eigen-components of the matrix. Thesehigher valued L₀₁ and L₁₀ pair components should be assigned to nodewireless node N₀, as described above. Once eigen assignment hashappened, we are now ready. Each incoming link vector, if satisfying theexcitation condition is projected on eigen components and a likelihoodassigned (according to the table determined by a designer) based on theresult of that projection.

In some implementations, a method for determining a location of motionincludes storing a set of eigenvectors derived from first motion-sensingdata associated with a first time frame. The first motion-sensing datais based on wireless signals transmitted between access point (AP) nodesin a wireless mesh network during the first time frame while thewireless mesh network operates in a first motion-sensing topology (orfirst motion topology). Each of the eigenvectors in the set is assignedto a respective one of the AP nodes. In some instances, the firstmotion-sensing data includes motion indicator values, which may becomputed from channel information derived from the wireless signals.However, the first motion-sensing data may include other types of data,such as wireless nodes sharing a common connected state.

The method also includes obtaining a motion vector based on wirelesssignals transmitted between the AP nodes during a second, subsequenttime frame while the wireless mesh network operates in a second,distinct motion-sensing topology. The motion vector includes motionindicator values for respective wireless links between the AP nodes. Inresponse to detecting an inconsistency associated with the secondmotion-sensing topology, the motion vector is compared with therespective eigenvectors. The method additionally includes generating aprobability vector based on the comparison. The probability vectorincludes values that represent probabilities of motion of an object atrespective AP nodes during the second time frame. In many instances,generation of the probability occurs by operation of a data processingapparatus, which executes program instructions corresponding to one ormore of the flowcharts depicted in FIGS. 4, 10, and 15. A location ofthe motion of the object during the second time frame is then determinedbased on the probability vector.

In some implementations, the method includes repeating the operations,over multiple iterations for respective second time frames, of obtaininga motion vector, comparing the motion vector, generating a probabilityvector, and determining a location of motion.

In some implementations, the method includes identifying the firstmotion-sensing topology based on first tags assigned to respective APnodes. Each of the first tags indicates a connected state of arespective AP node. The method also includes identifying the secondmotion-sensing topology based on second tags assigned to respective APnodes. Each of the second tags indicates a connected state of arespective AP node. In some implementations, detecting an inconsistencyassociated with the second motion-sensing topology includes detectingthat the second-motion sensing topology does not match a networktopology of the wireless mesh network during the second time frame. Forexample, detecting the inconsistency may include identifying a number ofdoubly-connected nodes in the motion-sensing topology that is greaterthan a number of doubly-connected nodes in the network topology.

In some implementations, the method includes generating the set ofeigenvectors by at least obtaining an aggregate correlation matrix forthe first time period based on the first motion-sensing data andperforming a matrix decomposition of the aggregate correlation matrix toobtain the eigenvectors. In these implementations, the method mayoptionally include computing the aggregate correlation matrix by atleast: [1] obtaining first motion vectors based on respective subsets ofthe first motion-sensing data, [2] for each of the subsets of the firstmotion-sensing data, multiplying the first motion vector by a transposedinstance of the first motion vector to generate a correlation matrix,and [3] combining the correlation matrices for the subsets to obtain theaggregate correlation matrix. The first motion vectors each includefirst motion indicator values for respective wireless links between theAP nodes.

In some implementations, comparing the motion vector with the respectiveeigenvectors includes computing dot products between the motion vectorand the respective eigenvectors. In these implementations, theprobability vector is generated based on the dot products. In furtherimplementations, the method includes generating a count-value datastructure based on the motion-sensing data. The count-value datastructure includes count values for respective AP nodes. Each countvalue indicates a number of wireless links defined by a respective APnode that were, according to the motion-sensing data, excited by motion.The method also includes modifying the count-value data structure basedon the dot products and generating the probability vector based on themodified count-value data structure. In some variations, the dotproducts include first and second dot products in which the first dotproduct is computed from the respective eigenvector that is associatedwith a first AP node and the second dot product is computed from therespective eigenvector that is associated with a second AP node. Thefirst dot product is higher than the second dot product. Moreover,modifying the count-value value data structure includes increasing thecount value for the first AP node and decreasing the count value for thesecond AP node.

In some implementations, the wireless mesh network includes one or moreleaf nodes in addition to the AP nodes. In these implementations,determining the location of the motion includes identifying one of theAP nodes or one of the leaf nodes as the location of the motion.

The aforementioned methods and their variations may be implemented usinga system that includes the wireless mesh network and its AP nodes (orleaf nodes, if present), one or more processors, and memory storinginstructions that, when executed by the one or more processors, causesthe system to perform operations of the methods and their variations.The aforementioned methods and their variations may also be stored asinstructions on a non-transitory computer-readable medium. Theinstructions, when executed by a data processing apparatus, cause thedata processing apparatus to perform the operations of the methods andtheir variations.

Now referring to FIG. 16, a schematic diagram is presented of an examplewireless communication network 1600 in which leaf nodes 1606 arecommunicatively coupled to wireless nodes 1602. In particular, pairs ofwireless nodes are communicatively coupled to each other via wirelesscommunication channels 1604, and leaf nodes are communicatively coupledto wireless nodes via wireless communication channels 1608. Motionoccurring near wireless node N₂, as indicated by dashed arrow 1610, willexcite the wireless links communicatively coupling wireless node N₂ toleaf nodes Le₄, Le₅, and Le₆. However, if some of the leaf nodes 1606are close to each other, motion near one of these close leaf nodes mayexcite wireless links associated with other close leaf nodes. In FIG.16, leaf nodes Le₄ and Le₅ are shown close to each other. Motion aroundleaf node Le₄, as indicated by dashed arrow 1612, not only exciteswireless links communicatively-coupling leaf node Le₄ to wireless nodeN₂, but also wireless nodes communicatively-coupling leaf node Le₅ towireless node N₂.

In some variations, the wireless communication network 1600 correspondsto a wireless mesh network and the wireless nodes N₀, N₁, and N₂correspond to access point (AP) nodes of the wireless mesh network. Theaccess point nodes may generate motion-sensing data based on wirelesssignals transmitted along the wireless communication channels 1604,1608. For example, the motion-sensing data may be based on wirelesssignals transmitted between respective pairs of the access point nodesalong wireless links L₀₁, L₁₀, L₀₂, L₂₀, L₁₂ and L₂₁. The motion-sensingdata may also be based on wireless signals transmitted from a leaf nodeto an access point node along wireless links defining the wirelesscommunication channels 1608. The motion-sensing data may be generated inresponse to motion of an object in a space traversed by the wirelesssignals (e.g., as indicated by dashed arrow 1610 or dashed arrow 1612).However, the motion-sensing data may also be generated in the absencesuch motion.

FIG. 17 presents a flowchart 1700 of an example process for determininga location of motion based on identifying a wireless node near themotion and then identifying a leaf node communicatively coupled to thewireless node. The example process may localize the motion to both thewireless node and the leaf node. Wireless nodes may have higher powersthan leaf nodes, and as such, may be more prone to multipath effects asdiscussed in relation to FIG. 14. As such, the example process localizesthe motion to a wireless node first to mitigate possible multipatheffects and improve an accuracy of motion detection. A data processingapparatus executing program instructions according to the exampleprocess may continuously generate the best wireless node estimate fromthe available excited wireless link data. This estimate is used to forma decision on the wireless node that the motion disturbance is closestto. Once the wireless node decision is formed, the decision is used tofilter out some of the leaf node wireless links that are connected tothe other wireless nodes. Such filtering allows some of the lowestlikelihoods to be assigned those leaf nodes. Once the appropriateleaf-node wireless links have been filtered, the remaining wirelesslinks are passed to the sub-mesh likelihood function. Using the sub-meshlikelihood function, the data processing apparatus calculates thelikelihood of whether the motion is close to a wireless node, or any ofthe leaf nodes connected to the wireless node. This calculation allowsthe motion to be precisely located as happening close to any of theavailable nodes in the wireless communication network (e.g., a wirelessnode or a leaf node).

FIG. 18 presents an example formula for determining a location of motionusing a sub-mesh likelihood function. The sub-mesh nodes undergo aseparate likelihood formation, than the nodes excluded from thesub-mesh. The excluded nodes are assigned a uniformly (very) smallweight. In the specific example of motion in FIG. 16, a sub-mesh wouldbe defined by wireless node N₂ and leaf nodes Le₄, Le₅, and Le₆. Thesub-mesh likelihood function is operable to resolve: [1] competitionbetween a wireless node and a leaf node, and [2] competition amongstseveral leaf nodes whose respective wireless links may have beentriggered due to motion. The sub-mesh likelihood function resolves thecompetition between a wireless node and a leaf node because, if dataprocessing apparatus simply counts the number of times that any node hasappeared in the excited wireless links, then appearance of a wirelessnode will always surpass the leaf nodes whenever any two wireless linksconnected to the wireless node are triggered. However, this appearancecan be artificial. For example, two leaf-node wireless links could betriggered because of the close proximity of the leaf nodes, and motioncould be happening at any one of the two leaf nodes. A more accuratemeasure of motion at the wireless node is whether all wireless linksconnected to it have been excited or not. If the motion is actuallyhappening at the wireless node, then all wireless links connected to thenode (i.e., leaf nodes) will show some disturbance, as the channelpresent in those wireless links is undergoing changes. This behaviorrectified by modifying the likelihood function to include the proportionshown below:

$\frac{{number}\mspace{14mu}{of}\mspace{14mu}{appearances}\mspace{14mu}{in}\mspace{14mu}{active}\mspace{14mu}{links}}{{connectivity}\mspace{14mu}{of}\mspace{14mu}{the}\mspace{14mu}{node}}$This proportion—which is also shown in FIG. 18—allows the likelihood ofwireless node to reach one (highest) only when all the connectedwireless links show motion on them. Since the leaf node has aconnectivity of one (always), the proportion will rise quickly to onewhenever any of the leaf-node wireless links are triggered.

If two leaf-node wireless links are simultaneously triggered due to theclose proximity of the leaf nodes, the likelihood function can befurther modified to account for this scenario. In particular, the motionmagnitude of the leaf nodes can be ordered. The highest magnitude can begiven a rank or 1, the next highest magnitude 2, and so forth. Then, amultiplier variable (α) can be selected that is a number less than one,and specifies how much weight should be given to the motion rankinformation in order to determine a likelihood. The value of themultiplier variable may be selected to have a small value with a rangefrom 0.01 to 0.09. The multiplier variable serves to amplify orde-amplify the motion rank information in the computation of thelikelihood. For a leaf node showing the highest rank, the likelihoodexpression above would be modified by multiplication with the term(1−α×rank). If the rank is one, then α would be subtracted from one tocreate a relatively large weight. If the rank is 2, then 2α would besubtracted from one to create a smaller weight for that leaf node'slikelihood. In this manner, a likelihood is assigned to all leaf nodeswhose respective wireless links have shown motion excitation on them.Such assignment allows the motion intensity (or channel disturbance)present on each leaf-node wireless link to be accounted for in thelikelihood of motion, and eventually in the probability of motion atthat particular node.

In some implementations, a method for determining a location of motionincludes obtaining motion-sensing data based on wireless signalsexchanged on wireless links in a wireless mesh network comprising aplurality of nodes. The plurality of nodes includes a first access point(AP) node, one or more other AP nodes, and leaf nodes. The wirelesslinks includes wireless links between the first AP node and the one ormore other AP nodes as well as wireless links between the first AP nodeand a first subset of the leaf nodes. The method also includesidentifying, based on the motion-sensing data, the first AP node as anestimated location of motion of an object.

In response to the first AP node being identified as the estimatedlocation of motion, the method additionally includes generating alikelihood data structure including likelihood values assigned torespective nodes of the plurality of nodes. The likelihood values areassigned to the first subset of the leaf nodes and the first AP nodebeing higher than the likelihood values assigned to other nodes in thewireless mesh network. In some variations, the likelihood valuesassigned to the first subset of the leaf nodes and the first AP node areat least an order of magnitude higher than the likelihood valuesassigned to other nodes in the wireless mesh network. A location of themotion of the object is determined based on the likelihood datastructure. In some implementations, the method includes repeating theoperations, over multiple iterations for respective time frames, ofobtaining motion-sensing data, identifying a first AP node, generating alikelihood data structure, and determining a location of the motion.

In some implementations, determining the location of the motion of theobject includes generating a probability vector based on the likelihooddata structure. The probability vector includes probability values thatrepresent probabilities of motion at respective nodes of the wirelessmesh network. Determining the location of the motion of the object alsoincludes selecting, based on the probability vector, the first AP nodeor one of the first subset of leaf nodes as the location of the motion.

In some implementations, the method includes computing the likelihoodvalue assigned to the first AP node based on a ratio of a number of leafnodes in the first subset and a number representing a connected state ofthe first AP node. In further implementations, the method includescomputing the likelihood values assigned to the first subset of leafnodes based on ranking motion indicator values associated with thewireless links between the first AP node and the first subset of leafnodes. In some instances, the likelihood value assigned to eachrespective leaf node represents the product of a rank assigned to theleaf node multiplied by an amplification factor. In these instances, themethod may optionally include assigning a uniform value to the othernodes in the wireless mesh network.

The aforementioned methods and their variations may be implemented usinga system that includes the wireless mesh network and its AP and leafnodes, one or more processors, and memory storing instructions that,when executed by the one or more processors, causes the system toperform operations of the methods and their variations. Theaforementioned methods and their variations may also be stored asinstructions on a non-transitory computer-readable medium. Theinstructions, when executed by a data processing apparatus, cause thedata processing apparatus to perform the operations of the methods andtheir variations.

Some of the subject matter and operations described in thisspecification can be implemented in digital electronic circuitry, or incomputer software, firmware, or hardware, including the structuresdisclosed in this specification and their structural equivalents, or incombinations of one or more of them. Some of the subject matterdescribed in this specification can be implemented as one or morecomputer programs, i.e., one or more modules of computer programinstructions, encoded on a computer storage medium for execution by, orto control the operation of, data-processing apparatus. A computerstorage medium can be, or can be included in, a computer-readablestorage device, a computer-readable storage substrate, a random orserial access memory array or device, or a combination of one or more ofthem. Moreover, while a computer storage medium is not a propagatedsignal, a computer storage medium can be a source or destination ofcomputer program instructions encoded in an artificially generatedpropagated signal. The computer storage medium can also be, or beincluded in, one or more separate physical components or media (e.g.,multiple CDs, disks, or other storage devices).

Some of the operations described in this specification can beimplemented as operations performed by a data processing apparatus ondata stored on one or more computer-readable storage devices or receivedfrom other sources.

The term “data-processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, a system on a chip, or multipleones, or combinations, of the foregoing. The apparatus can includespecial purpose logic circuitry, e.g., an FPGA (field programmable gatearray) or an ASIC (application specific integrated circuit). Theapparatus can also include, in addition to hardware, code that createsan execution environment for the computer program in question, e.g.,code that constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, a cross-platform runtimeenvironment, a virtual machine, or a combination of one or more of them.

A computer program (also known as a program, program instructions,software, software application, script, or code) can be written in anyform of programming language, including compiled or interpretedlanguages, declarative or procedural languages, and it can be deployedin any form, including as a stand-alone program or as a module,component, subroutine, object, or other unit suitable for use in acomputing environment. A computer program may, but need not, correspondto a file in a file system. A program can be stored in a portion of afile that holds other programs or data (e.g., one or more scripts storedin a markup language document), in a single file dedicated to theprogram, or in multiple coordinated files (e.g., files that store one ormore modules, sub programs, or portions of code). A computer program canbe deployed to be executed on one computer or on multiple computers thatare located at one site or distributed across multiple sites andinterconnected by a communication network.

Some of the processes and logic flows described in this specificationcan be performed by one or more programmable processors executing one ormore computer programs to perform actions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andprocessors of any kind of digital computer. Generally, a processor willreceive instructions and data from a read-only memory or a random-accessmemory or both. Elements of a computer can include a processor thatperforms actions in accordance with instructions, and one or more memorydevices that store the instructions and data. A computer may alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic disks, magneto optical disks, or optical disks. However, acomputer need not have such devices. Moreover, a computer can beembedded in another device, e.g., a phone, an electronic appliance, amobile audio or video player, a game console, a Global PositioningSystem (GPS) receiver, or a portable storage device (e.g., a universalserial bus (USB) flash drive). Devices suitable for storing computerprogram instructions and data include all forms of non-volatile memory,media and memory devices, including by way of example semiconductormemory devices (e.g., EPROM, EEPROM, flash memory devices, and others),magnetic disks (e.g., internal hard disks, removable disks, and others),magneto optical disks, and CD ROM and DVD-ROM disks. In some cases, theprocessor and the memory can be supplemented by, or incorporated in,special purpose logic circuitry.

To provide for interaction with a user, operations can be implemented ona computer having a display device (e.g., a monitor, or another type ofdisplay device) for displaying information to the user and a keyboardand a pointing device (e.g., a mouse, a trackball, a tablet, a touchsensitive screen, or another type of pointing device) by which the usercan provide input to the computer. Other kinds of devices can be used toprovide for interaction with a user as well; for example, feedbackprovided to the user can be any form of sensory feedback, e.g., visualfeedback, auditory feedback, or tactile feedback; and input from theuser can be received in any form, including acoustic, speech, or tactileinput. In addition, a computer can interact with a user by sendingdocuments to and receiving documents from a device that is used by theuser; for example, by sending web pages to a web browser on a user'sclient device in response to requests received from the web browser.

A computer system may include a single computing device, or multiplecomputers that operate in proximity or generally remote from each otherand typically interact through a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), an inter-network (e.g., the Internet), a networkcomprising a satellite link, and peer-to-peer networks (e.g., ad hocpeer-to-peer networks). A relationship of client and server may arise byvirtue of computer programs running on the respective computers andhaving a client-server relationship to each other.

While this specification contains many details, these should not beunderstood as limitations on the scope of what may be claimed, butrather as descriptions of features specific to particular examples.Certain features that are described in this specification or shown inthe drawings in the context of separate implementations can also becombined. Conversely, various features that are described or shown inthe context of a single implementation can also be implemented inmultiple embodiments separately or in any suitable sub-combination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single product or packagedinto multiple products.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications can be made. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A method comprising: storing first motion-sensingstatistics derived from first motion-sensing data associated with afirst time frame, the first motion-sensing data based on wirelesssignals transmitted between respective pairs of access point (AP) nodesin a wireless mesh network during the first time frame while thewireless mesh network operates in a first motion-sensing topology;obtaining second motion-sensing data based on wireless signalstransmitted between respective pairs of the AP nodes during a second,subsequent time frame while the wireless network operates in a second,distinct motion-sensing topology; in response to detecting aninconsistency associated with the second motion-sensing topology:obtaining second motion-sensing statistics derived from the secondmotion-sensing data, and comparing the first motion-sensing statisticswith the second motion-sensing statistics; by operation of a dataprocessing apparatus, generating a probability vector based on thecomparison, the probability vector comprising values that representprobabilities of motion of an object at respective AP nodes during thesecond time frame; and determining a location of the motion of theobject during the second time frame based on the probability vector. 2.The method of claim 1, comprising: identifying a set of wireless linksin the wireless mesh network that were, according to the secondmotion-sensing data, excited by motion during the second time frame;wherein the second motion-sensing statistics comprise test deep tagsassociated with the identified set of wireless links, each test deep tagcomprising a respective test probability density function associatedwith the second time frame; and wherein the first motion-sensingstatistics comprise reference deep tags associated with the identifiedset of wireless links, each reference deep tag comprising a respectivereference probability density function associated with the first timeframe.
 3. The method of claim 2, comprising: generating the testprobability density functions based on sampling subsets of the firstmotion-sensing data; and generating the reference probability densityfunctions based on sampling subsets of the second motion-sensing data.4. The method of claim 2, comprising: generating a count-value datastructure comprising count values for respective AP nodes, each countvalue indicating a number of wireless links defined by a respective APnode that were excited by motion during the second time period;modifying the count-value data structure based on a comparison betweenthe test deep tags and the reference deep tags; and generating theprobability vector based on the modified count-value data structure. 5.The method of claim 4, wherein modifying the count-value data structurecomprises decreasing the count value for an AP node if a differencebetween the test deep tag and the reference deep tag is greater than athreshold difference.
 6. The method of claim 4, wherein modifying thecount-value data structure comprises increasing the count value for anAP node if a difference between the test deep tag and the reference deeptag is less than a threshold difference.
 7. The method of claim 1,comprising: identifying the first motion-sensing topology based on firsttags assigned to respective AP nodes, each of the first tags indicatinga connected state of a respective AP node; and identifying the secondmotion-sensing topology based on second tags assigned to respective APnodes, each of the second tags indicating a connected state of arespective AP node.
 8. The method of claim 1, wherein detecting aninconsistency associated with the second motion-sensing topologycomprises detecting that the second-motion sensing topology does notmatch a network topology of the wireless mesh network during the secondtime frame.
 9. The method of claim 1, wherein the wireless mesh networkcomprises one or more leaf nodes in addition to the AP nodes; andwherein determining the location of the motion comprises identifying oneof the AP nodes or one of the leaf nodes as the location of the motion.10. The method of claim 1, comprising: repeating the operations, overmultiple iterations for respective second time frames, of obtainingsecond motion-sensing data, detecting an inconsistency, generating aprobability vector, and determining a location of motion.
 11. A systemcomprising: a wireless mesh network comprising access point (AP) nodes;one or more processors; and memory storing instructions that, whenexecuted by the one or more processors, cause the system to perform theoperations comprising: storing first motion-sensing statistics derivedfrom first motion-sensing data associated with a first time frame, thefirst motion-sensing data based on wireless signals transmitted betweenrespective pairs of access point (AP) nodes in a wireless mesh networkduring the first time frame while the wireless mesh network operates ina first motion-sensing topology; obtaining second motion-sensing databased on wireless signals transmitted between respective pairs of the APnodes during a second, subsequent time frame while the wireless networkoperates in a second, distinct motion-sensing topology; in response todetecting an inconsistency associated with the second motion-sensingtopology: obtaining second motion-sensing statistics derived from thesecond motion-sensing data, and comparing the first motion-sensingstatistics with the second motion-sensing statistics; generating aprobability vector based on the comparison, the probability vectorcomprising values that represent probabilities of motion of an object atrespective AP nodes during the second time frame; and determining alocation of the motion of the object during the second time frame basedon the probability vector.
 12. The system of claim 11, wherein theoperations comprise: identifying a set of wireless links in the wirelessmesh network that were, according to the second motion-sensing data,excited by motion during the second time frame; wherein the secondmotion-sensing statistics comprise test deep tags associated with theidentified set of wireless links, each test deep tag comprising arespective test probability density function associated with the secondtime frame; and wherein the first motion-sensing statistics comprisereference deep tags associated with the identified set of wirelesslinks, each reference deep tag comprising a respective referenceprobability density function associated with the first time frame. 13.The system of claim 12, wherein the operations comprise: generating thetest probability density functions based on sampling subsets of thefirst motion-sensing data; and generating the reference probabilitydensity functions based on sampling subsets of the second motion-sensingdata.
 14. The system of claim 12, wherein the operations comprise:generating a count-value data structure comprising count values forrespective AP nodes, each count value indicating a number of wirelesslinks defined by a respective AP node that were excited by motion duringthe second time period; modifying the count-value data structure basedon a comparison between the test deep tags and the reference deep tags;and generating the probability vector based on the modified count-valuedata structure.
 15. The system of claim 14, wherein modifying thecount-value data structure comprises decreasing the count value for anAP node if a difference between the test deep tag and the reference deeptag is greater than a threshold difference.
 16. The system of claim 14,wherein modifying the count-value data structure comprises increasingthe count value for an AP node if a difference between the test deep tagand the reference deep tag is less than a threshold difference.
 17. Thesystem of claim 11, wherein the operations comprise: identifying thefirst motion-sensing topology based on first tags assigned to respectiveAP nodes, each of the first tags indicating a connected state of arespective AP node; and identifying the second motion-sensing topologybased on second tags assigned to respective AP nodes, each of the secondtags indicating a connected state of a respective AP node.
 18. Thesystem of claim 11, wherein detecting an inconsistency associated withthe second motion-sensing topology comprises detecting that thesecond-motion sensing topology does not match a network topology of thewireless mesh network during the second time frame.
 19. The system ofclaim 11, wherein the wireless mesh network comprises one or more leafnodes in addition to the AP nodes; and wherein determining the locationof the motion comprises identifying one of the AP nodes or one of theleaf nodes as the location of the motion.
 20. The system of claim 11,wherein the operations comprise: repeating the operations, over multipleiterations for respective second time frames, of obtaining secondmotion-sensing data, detecting an inconsistency, generating aprobability vector, and determining a location of motion.
 21. Anon-transitory computer-readable medium storing instructions that, whenexecuted by a data processing apparatus, cause the data processingapparatus to perform operations comprising: storing first motion-sensingstatistics derived from first motion-sensing data associated with afirst time frame, the first motion-sensing data based on wirelesssignals transmitted between respective pairs of access point (AP) nodesin a wireless mesh network during the first time frame while thewireless mesh network operates in a first motion-sensing topology;obtaining second motion-sensing data based on wireless signalstransmitted between respective pairs of the AP nodes during a second,subsequent time frame while the wireless network operates in a second,distinct motion-sensing topology; in response to detecting aninconsistency associated with the second motion-sensing topology:obtaining second motion-sensing statistics derived from the secondmotion-sensing data, and comparing the first motion-sensing statisticswith the second motion-sensing statistics; generating a probabilityvector based on the comparison, the probability vector comprising valuesthat represent probabilities of motion of an object at respective APnodes during the second time frame; and determining a location of themotion of the object during the second time frame based on theprobability vector.
 22. The non-transitory computer-readable medium ofclaim 21, wherein the operations comprise: identifying a set of wirelesslinks in the wireless mesh network that were, according to the secondmotion-sensing data, excited by motion during the second time frame;wherein the second motion-sensing statistics comprise test deep tagsassociated with the identified set of wireless links, each test deep tagcomprising a respective test probability density function associatedwith the second time frame; and wherein the first motion-sensingstatistics comprise reference deep tags associated with the identifiedset of wireless links, each reference deep tag comprising a respectivereference probability density function associated with the first timeframe.
 23. The non-transitory computer-readable medium of claim 22,wherein the operations comprise: generating the test probability densityfunctions based on sampling subsets of the first motion-sensing data;and generating the reference probability density functions based onsampling subsets of the second motion-sensing data.
 24. Thenon-transitory computer-readable medium of claim 22, wherein theoperations comprise: generating a count-value data structure comprisingcount values for respective AP nodes, each count value indicating anumber of wireless links defined by a respective AP node that wereexcited by motion during the second time period; modifying thecount-value data structure based on a comparison between the test deeptags and the reference deep tags; and generating the probability vectorbased on the modified count-value data structure.
 25. The non-transitorycomputer-readable medium of claim 24, wherein modifying the count-valuedata structure comprises decreasing the count value for an AP node if adifference between the test deep tag and the reference deep tag isgreater than a threshold difference.
 26. The non-transitorycomputer-readable medium of claim 24, wherein modifying the count-valuedata structure comprises increasing the count value for an AP node if adifference between the test deep tag and the reference deep tag is lessthan a threshold difference.
 27. The non-transitory computer-readablemedium of claim 21, wherein the operations comprise: identifying thefirst motion-sensing topology based on first tags assigned to respectiveAP nodes, each of the first tags indicating a connected state of arespective AP node; and identifying the second motion-sensing topologybased on second tags assigned to respective AP nodes, each of the secondtags indicating a connected state of a respective AP node.
 28. Thenon-transitory computer-readable medium of claim 21, wherein detectingan inconsistency associated with the second motion-sensing topologycomprises detecting that the second-motion sensing topology does notmatch a network topology of the wireless mesh network during the secondtime frame.
 29. The non-transitory computer-readable medium of claim 21,wherein the wireless mesh network comprises one or more leaf nodes inaddition to the AP nodes; and wherein determining the location of themotion comprises identifying one of the AP nodes or one of the leafnodes as the location of the motion.
 30. The non-transitorycomputer-readable medium of claim 21, wherein the operations comprise:repeating the operations, over multiple iterations for respective secondtime frames, of obtaining second motion-sensing data, detecting aninconsistency, generating a probability vector, and determining alocation of motion.